內是匹配的字元,^表示求反集,當遇到非集合內的字元時立即終止輸入
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...