2

入力が整数かどうかを確認するために、文字列を反復処理しようとしています。

これはコードです:

 for (int i = 1; i < strlen(buffer); i++) //Checking that each character of the string is numeric
    {
        if (!isdigit(buffer[i]))
        {
            valid = false;
            break;
        }
    }

    if(valid == false)
    {
        printf("Invalid input!");
    }

    else
    {
        num = atoi(buffer);
        printf("The number entered is %d", num);
    }

問題は、入力が正しい場合でも、2 としましょう。出力メッセージは依然として「無効な入力です!」です。

私は今とてもイライラしています。数値を検証して次のことを確認できるように、atoi 関数、strtol 関数、およびその他のメソッドを使用してみました。

1) 文字ではありません 2) 整数です

私を助けてください。私はこの問題を2時間以上解決しようとしています。

4

1 に答える 1

8

fgetsは行を読み取るため、文字列の末尾に a ('\n'数字ではない) が残る場合があります。あなたはそれを削除することができます:

#include <string.h>

char *pend = strrchr (buffer, '\n');

if (pend != NULL) *pend = '\0';
于 2013-03-05T18:05:42.170 に答える