C語言~~怎檢查讀入int卻輸入英文單字????

2012-10-02 1:40 am
例如:int a;
scanf("%d",&a);

但卻輸入一個英文單字...例如apple

如何在輸入單字後顯示"你輸入錯了"?????
更新1:

scanf("%d", &a) < 1.......這什麼意思0.0? 我輸入小於1的數字他還是會進入迴圈.... fflush(stdin);的意義是"檢查並且清空錯誤的輸入嗎"?????

更新2:

"我輸入小於1的數字他還是會進入迴圈"改成"我輸入任何整數都不會進入迴圈"

回答 (3)

2012-10-02 2:53 am
✔ 最佳答案
#include <stdio.h>
#include <stdlib.h>

int main(){
int a;

while (scanf("%d", &a) < 1){
fflush(stdin);
printf("你輸入錯了...\n");
}

printf("a = %d\n", a);

system("pause");
return 0;
}

2012-10-03 00:23:44 補充:
scanf函式會傳回成功給值的變數個數。
本例,scanf("%d", &a) 執行時,
若輸入數值,會成功的值設定給 a 變數,scanf 會傳回 1,
此時迴圈判斷式為 while (1 < 1),不成立,代表正確輸入數值。

若輸入非數值的文字,將無法設定 a 變數,scanf 會傳回 0,
此時迴圈判斷式為 while (0 < 1),成立,便會執行迴圈內的指令,
清除輸入緩衝區,顯示訊息,再重新輸入。
2012-10-02 2:48 am
int main()
{
char a;
int a1,mr=0;
scanf("%d",&a1);
a=(char)a1;
if((a>='a' && a<='z') ||( a>='A' && a<='Z')) printf("你輸入錯了\n");
else printf("%d\n",a1);
system("pause");
}
不過也如同樓上所說 可以直接用字元來讀取
2012-10-02 2:34 am
先都以字元方式輸入
再判斷是不是數字
如果不是就輸出"你輸入錯了"
參考: 我自己


收錄日期: 2021-05-04 02:06:37
原文連結 [永久失效]:
https://hk.answers.yahoo.com/question/index?qid=20121001000010KK04104

檢視 Wayback Machine 備份