1. 程式人生 > >C語言scanf()返回值以及EOF

C語言scanf()返回值以及EOF

做acm練習題時偶然發現一個奇特的現象:while(scanf("%d %d", &a, &b) != EOF)與while(scanf("%d %d", &a, &b) == 2)是等價的。百度後發現:原來scanf()函式是有返回值的,並且返回值是等於正確輸入的個數:舉個例子: 1.我輸入的是 a = 1, b = 2, 那麼用一個int x來接收scanf()的返回值得到的結果是 x = 2                  2. 如果我輸入的是 a = 1, b =q, 那麼 x = 1但是自己嘗試後貌似並不止這樣 :(先附上原始碼)#include <stdio.h>                                                                
int main()                                                                        1> 當我輸入 a = q時,程式直接輸出x = 0後退出,
{                                                                                       2>當輸入 a = 1, b = ctrl +z (EOF)時,需要再次輸
    int a,b;                                                                              入一個ctrl + z程式才能正常結束,x = 1
    int x;                                                                            3>當輸入 a = ctrl + z時,x = -1 程式直接結束
    x = scanf("%d %d", &a, &b);
    printf("%d", x);
    return 0;
}通過幾輪嘗試發現:scanf()函式貌似是每輸入一個引數檢索一次,如果第一次檢索到EOF那麼程式將不再往下執行而是直接返回-1,同理當檢索到非正常輸入時也直接返回0不再往下檢索。

最後附上一些參考的資料:http://blog.csdn.net/Linuxxulin/article/details/7018321

點選開啟連結