scanf("格式化字符串",地址列表);ios
<1>若是scanf產生了錯誤,那麼返回0ide
注意:spa
<1>scanf尋找數據起始位置時,跳過空白字符(空格、回車、製表符等),即遇到空白符認爲結束一次輸入操做字符串
<2>scanf中%e、%g、%f能夠互換it
<3>scanf從左往右依次分析格式字符串。若是遇到一個不符合的字符,就把這個字符放回,下次再讀io
如:class
1-20.3-4.0e3stream
%d%d%f%f數據
i = 1tab
j = -20
x = 0.3
y = -4.0e3
<2>scanf不會讀取最後的換行符,因此有時候用scanf("%*c")將換行符讀出,防止後面的讀取
如:
printf("請輸入c1:");
scanf("%c",&c1);
printf("請輸入c2:");
scanf("%*c");
scanf("%c",&c2);
<3>scanf("%*[^\n]");
*表示忽略讀取到的內容
[^\n]:任何非\n的字符,將任何\n的字符所有讀走
i和d再printf和scanf中的區別:
<1>printf中沒有區別
<2>scanf中d只能匹配十進制數字;i能夠匹配八進制 十進制 十六進制
<4>組織格式化輸入輸出字符串:
fprintf(&iostream, "格式化字符串", 表達式列表);
fscanf(...);
&iostream:能夠是stdout/stdin
<5>字符緩衝的問題見 輸入、輸出緩衝區