scanf 正規表示式的使用

2021-10-23 21:09:52 字數 1192 閱讀 1933

內是匹配的字元,^表示求反集,當遇到非集合內的字元時立即終止輸入

scanf("%[a-z]",str1);

printf("%s\n",str1);

輸入:abc123

輸出:abc

scanf("%[a-za-z0-9]", str1);

printf("%s\n",str1);

輸入:abc123 def

輸出:abc123

scanf("%[^a-z]", str1);

printf("%s\n",str1);

輸入:123 456abc123

輸出:123 456

注意:這種方式可以讀入空格

scanf("%[^\n]", str1);

printf("%s\n",str1);

//讀入一整行字串,包括空格

輸入:abc123 def

輸出:abc123 def

scanf("%[^a-d0-9]", str1);

printf("%s\n",str1);

輸入:efxy89

輸出:efxy

%表示選擇,%後面的是條件。

比如::"%s",s是乙個條件,表示任意字元,"%s"的意思是:只要輸入的東西是乙個字元,就把它拷貝給str。

"%3s"又多了乙個條件:只拷貝3個字元。

"%[a-z]"的條件稍微嚴格一些,輸入的東西不但是字元,還得是乙個小寫字母的字元。

%* 與%剛好相反,表示過濾滿足條件的字元,也就是跳過滿足條件的字元,其後一定要有新的%語句,否則無法讀入

scanf("%*[a-z0-9]%[^\n]",str1);

printf("%s\n",str1);

輸入:a1b2c3abcdef123

輸出:abc

從中提取tom

const char* url = "";

char uri[10] = ;

sscanf(url,"%*[^:]:%[^@]", uri);

printf("%s ",uri);

從iios/12ddwdff@122中提取12ddwdff

const char* s = "iios/12ddwdff@122";

char buf[20];

sscanf(s, "%*[^/]/%[^@]", buf);

scanf的正規表示式

include stdafx.h include int main1 int argc,char argv scanf s str 空格當做結束 scanf n str 遇到回車就結束 scanf str 等號作為結束符 scanf str 以英文的逗號結束 printf str s n str r...

scanf 與正規表示式

1 scanf 函式根據由format 格式 指定的格式從stdin 標準輸入 讀取,並儲存資料到其它引數.format 格式 字串由控制字元,空白字元和非空白字元組成.控制字元以乙個 符號開始。2 scanf 讀取匹配format 格式 字串的輸入.當讀取到乙個控制字元,它把值放置到下乙個變數.空...

在scanf中使用正規表示式

內是匹配的字元,表示求反集,當遇到非集合內的字元時立即終止輸入 1.輸入指定範圍的小寫字母,遇到非法字元立即終止 scanf a z str1 printf s n str1 輸入 abc123 輸出 ab 輸入帶空格的自定範圍的字串 scanf a z a z0 9 str1 printf s n...