(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 獲取 和...