0

単純なCアプリケーションで入力を数値のみに制限しようとしていますが、警告が表示されます。次のセグメントと関係があるのではないかと思います。バージョン1は物事を行うための適切な方法ですか?ありがとう。

    for(i=0;i< strlen(string); i++)
{
    if( string[i]<"0" || string[i]>"9")
        valid= FALSE;
}

また

    for(i=0;i< strlen(string); i++)
{
    if( string[i]<'0' || string[i]>'9')
        valid= FALSE;
}

私のコードの残りは

    void main()

{
    char number[4];
    printf("Please enter a decimal number: ");
    gets(number);   
    if (numeric(number))
        printf("'%s' is a valid number\n", number);
    else
        printf("'%s' is an invalid number\n", number);
}

明確にするために、私が行っている演習に従って与えられた方法でチェックを行う必要があります。ありがとう。

4

2 に答える 2

1

Version one is entirely wrong. It does pointer comparisons, because string literals decay to pointers and characters are promoted to int.

Version two is close, though you should really use isdigit from <ctype.h>.

Btw., are you aware that i < strlen(string) in a loop termination condition turns linear-time algorithms into quadratic-time ones?

于 2011-11-05T19:18:51.913 に答える
0

if (scanf ("%d", &n)==1)を使用したり呼び出したりすることはできませんstrtolか?

于 2011-11-05T19:23:16.747 に答える