簡體   English   中英

驗證整數輸入

[英]Validating Integer Input

int a;
scanf("%d",&a);

如果將非數字字符作為scanf()語句的輸入給出,我如何確保代碼不起作用? [我需要一個不會讓我將數據類型更改為char的解決方案]

如果第一個字符是不是一個數字,那么%d將無法匹配,和a將不會分配。 scanf的返回值告訴您已分配了多少項。 如果它是一個,那么顯然它至少部分是有效數字。 如果它為零,則表示無法將其解析為數字,並且您可能希望發出錯誤信號。

scanf返回代碼將告訴您arg列表中有多少項被填充。 這可能仍然不是你想要的:我認為你會發現輸入“123four”仍將返回1,a = 123。

您可以使用do while循環來驗證來自用戶的輸入,例如:

int read,a;
do {
        read = scanf("%c", &a);
    }while(read != EOF && a != '\n'); //change validation here according to condition

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM