scanf 與正規表示式

2021-08-18 12:47:48 字數 1507 閱讀 9767

(1)scanf()函式根據由format(格式)指定的格式從stdin(標準輸入)讀取,並儲存資料到其它引數. format(格式)字串由控制字元,空白字元和非空白字元組成. 控制字元以乙個%符號開始。

(2)scanf()讀取匹配format(格式)字串的輸入. 當讀取到乙個控制字元, 它把值放置到下乙個變數. 空白(tabs, 空格等等)會跳過. 非空白字元和輸入匹配, 然後丟棄.

(3)scanf()的返回值是成功賦值的變數數量,發生錯誤時返回eof.

控制字元

說明控制字元

說明%c

乙個單一的字元

%p乙個指標

%d乙個十進位制整數

%n乙個等於讀取字元數量的整數

%i乙個整數

%s乙個字串

%e, %f, %g

乙個浮點數

%%乙個精度符號

%o乙個八進位制數

%[ ]

乙個字符集

%x乙個十六進製制數

%u乙個無符號整數

%nf 讀入的浮點數最多有n位整數,位數多於n,會截斷。

「%n[a-z]」 讀入最多n個字元,如果遇到非a-z的字元,停止「%[^=]」 讀入任意多的字元,直到遇到"="停止

「%n[^=]」 讀入"="號前的至多n 個字元

"*"表示該輸入項讀入後不賦予任何變數,即跳過該輸入值

比如%[0-9]表示唯讀入』0』到』9』之間的字元,%[a-za-z]表示唯讀入字母,

'-'是範圍連線符,也可以直接列出你需要讀入的字元。

用scanf()代替gets()讀取一整行儲存為字串 //哼 再也不用gets()了

char *str;

scanf("%[^\n]%*c",str);

printf("%s",str);

其中,*%c的作用是吸收\n

僅讀取到指定字元

scanf("%[^0-9]%d",str,&num);

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

printf("%d",num);

2018/4/10

在 printf 中,* 作為整型引數控制輸出長度,如 %*s 相當於%ns,

%*s不會截斷輸出,%.*s會截斷輸出,均不補足長度

%*d不會截斷輸出空格補足長度,%.*d不會截斷輸出,會用前導0補足長度

int len, num;

scanf

("%d%d"

,&len,

&num)

;printf

("%*d"

,len,num)

;//輸入5 20

//輸出 20

//輸入1 20

//輸出2

2019/10/20

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 正規表示式的使用

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

scanf中的正規表示式 ZZ

怎樣從中取出tom?char url char uri 10 sscanf url,uri 轉貼 在softmse jake 的問題貼 4321558中 周星星給出了乙個很cool的sscanf用例,而後通過學習,發現sscanf真棒,現做一總結。原問題 iios 12ddwdff 122 獲取 和...