程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程解疑 >> c語言-C語言scanf返回值的問題

c語言-C語言scanf返回值的問題

編輯:編程解疑
C語言scanf返回值的問題

其調用格式為: 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了,所以循環不能繼續。
看上面那個程序,看得很清楚。

qq_29541945
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved