2012-12-02 76 views
0

我試圖在我的c程序中只掃描允許的類型。 我有一個整數變量。我想再次掃描,而用戶輸入是字符。防止用戶輸入不正確的數據類型

int usercount; 

    do{ 
    printf("enter user count"); 
    scanf("%d",&usercount); 
    } 
    while(!isdigit(usercount)); 

但是,當輸入是字符它是在一個無限循環。任何人都可以幫助嗎?

+0

成千上萬的重複在這個網站上。到處搜索。答案應該包含'fgets',它應該告訴你放棄輸入操作的結果。 –

+0

[http://c-faq.com/stdio/scanfprobs.html](http://c-faq.com/stdio/scanfprobs.html) – potrzebie

回答

1

scanf()函數有一個返回值。它會告訴你有多少「轉換」成功。在這種情況下,如果未能將輸入解釋爲整數,它將返回0。你的代碼應該檢查返回值。

通常,以與「東西」留在緩衝的輸入隊列較不敏感,應在與fgets()一次讀取一個完整的行,然後使用sscanf()(或任何其它解析功能,如strtoul())來解析數據。