C言語のscanfの戻り値の無視を解決する方法
C言語のscanf関数の戻り値を無視している場合は以下の方法で解決できます。
- scanf関数の戻り値をチェックする。戻り値は正常に取得できた引数の数を示すので、正しい入力を得られたかどうかを確認するのに使用できます。変数にこの戻り値を代入し、その値が期待できる引数の数と等しいかどうかを確認します。
int numInputs = scanf("%d %d", &x, &y);
if(numInputs != 2){
printf("输入参数个数不正确\n");
// 进行错误处理或提示用户重新输入
}
- 入力バッファのクリア: 入力データが想定外だった場合、入力バッファに意図しないデータが残っていることがあります。改行文字が見つかるまで入力バッファから意図しないデータをクリアするために、ループを使用できます。
int c;
while((c = getchar()) != '\n' && c != EOF){
// 清除输入缓冲区
}
- fgets関数を使用すると、scanf関数の代わりに、一行の入力を文字列として読み込み、sscanf関数で文字列から必要なデータを取り出します。
char input[100];
fgets(input, sizeof(input), stdin);
if(sscanf(input, "%d %d", &x, &y) != 2){
printf("输入参数个数不正确\n");
// 进行错误处理或提示用户重新输入
}
上記の方法により、scanfの戻り値の破棄の問題を解決し、入力の正確性を確保できる