2011-11-18 44 views
4

我有一個程序定義了一個變量int data如何確定scanf是否讀取格式中指定的內容?

該程序使用scanf("%d",&data)從標準輸入讀取數據。 如果來自stdin的數據不是整數,我必須打印錯誤消息。

我試圖if(scanf("%d",&data) ==EOF){ printf("error");return 1;}

對我來說didn`t工作。那麼,如何確定scanf是失敗還是成功呢?

回答

8

scanf的返回值是一個整數,告訴你有多少項被成功地讀取。如果您的單個整數被成功讀取,scanf將返回1.

例如,

int items_read = scanf("%d", &data); 

if (items_read != 1) { 
    //It was not a proper integer 
} 

關於讀取整數有一個很好的討論here, on Stack Overflow

3

scanf返回成功讀取的項目數。您可以檢查它未能在對1檢查,因爲你正在閱讀一個項目:

if (scanf("%d", &data) != 1) 
    // error 
相關問題