其調用格式為: scanf("<格式化字符串>",<地址表>);
scanf()函數返回成功賦值的數據項數,出錯時則返回EOF。
為了測試這一點我寫了兩段代碼,第一段是
a=scanf("%d",&b);
printf("%d",a);這樣寫輸入1.2,2.3,2,3,4
都會打印1.
但是
while(scanf("%d",&b)==1);輸入1.2就會終止循環,2,3,4,都會正常循環並讓我繼續輸入。這說明輸入1.2是返回0的。
為什麼?並沒有發現兩種形式的不同之處,還是說在賦值的時候scanf自帶強制類型轉換所以無所謂?
#include <stdio.h>
int main(int argc, char* argv[])
{
int b;
char c;
scanf("%d", &b);
scanf("%c", &c);
printf("%d %c", b, c);
return 0;
}
輸入1.2其實%d只捕獲到了1,後面那個.沒有捕獲。下次再捕獲%d的時候就是0了,所以循環不能繼續。
看上面那個程序,看得很清楚。