Mi 發問時間: 電腦與網際網路程式設計 · 8 年前

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

例如:int a;

scanf("%d",&a);

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

如何在輸入單字後顯示"你輸入錯了"?????

已更新項目:

scanf("%d", &a) < 1.......這什麼意思0.0?

我輸入小於1的數字他還是會進入迴圈....

fflush(stdin);的意義是"檢查並且清空錯誤的輸入嗎"?????

2 個已更新項目:

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

3 個解答

評分
  • 8 年前
    最佳解答

    #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),成立,便會執行迴圈內的指令,

    清除輸入緩衝區,顯示訊息,再重新輸入。

  • 8 年前

    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");

    }

    不過也如同樓上所說 可以直接用字元來讀取

  • 8 年前

    先都以字元方式輸入

    再判斷是不是數字

    如果不是就輸出"你輸入錯了"

    參考資料: 我自己
還有問題?馬上發問,尋求解答。