0

13 桁の整数 (long long) の入力を求める C プログラムがあります。ただし、ユーザーが誤って文字を入力する場合があります。入力内のすべての文字を無視して、クラッシュやループを回避するにはどうすればよいですか?

4

3 に答える 3

4
  1. 文字列を入力
  2. 文字列内のすべての文字が数字であることを確認します
    • 入力が無効な場合: 文句を言って終了するか、再プロンプトしてgoto 1、またはアプリにとって意味のあるものなら何でも
  3. (検証済みの)文字列を整数値に変換します
于 2012-08-16T17:04:35.117 に答える
1

cでは、次のようにします:

#include <stdio.h>
#include <string.h>
#include <ctype.h>

int main()
{
    char str[1000];
    int i;
    int newLength = 0;
    long long l;

    scanf( "%s", str );

    for ( i = 0; str[i] != '\0'; ++i )
    {
        if ( isdigit( str[i] ) )
            str[newLength++] = str[i];
    }
    str[newLength] = '\0';
    sscanf( str, "%d", &l );

    return 0;
}
于 2012-08-16T17:12:25.880 に答える
0

scanfを使用できます:

成功すると、関数は正常に読み取られたアイテムの数を返します。一致エラーが発生した場合、このカウントは予想される読み取り数と一致するか、ゼロになることもあります。

于 2012-08-16T17:05:55.807 に答える