13 桁の整数 (long long) の入力を求める C プログラムがあります。ただし、ユーザーが誤って文字を入力する場合があります。入力内のすべての文字を無視して、クラッシュやループを回避するにはどうすればよいですか?
質問する
122 次
3 に答える
4
- 文字列を入力
- 文字列内のすべての文字が数字であることを確認します
- 入力が無効な場合: 文句を言って終了するか、再プロンプトして
goto 1
、またはアプリにとって意味のあるものなら何でも
- 入力が無効な場合: 文句を言って終了するか、再プロンプトして
- (検証済みの)文字列を整数値に変換します
于 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 に答える