さて、gcc についてのコメントから、C をプログラミングしていると思います。しかし、質問に入ると、 を使用している場合scanf
、ほとんどすべてがチェックされます。使用方法を知っている必要があります。たとえば、次のようになります。
int main(void)
{
float input;
if(scanf("%f", &input) == 1)
{
printf("OK, I could read your float: %f.\n", input);
}
else
{
printf("Not OK, I couldn't read your float.\n");
}
return 0;
}
を入力5.4654
すると、正しい番号が出力されます。そこにフロートがあり、文字まで行ったので、入力5.4&654
すると出力されます。しかし、入力すると失敗し、フロートを読み取れませんでした。5.4
&
abc
これが機能する理由scanf
は、データの読み取りに成功した回数を返すためです。したがって、 を要求"%f %f %d"
する場合は、戻り値が3
であるかどうかを確認する必要があります。そうであれば、邪魔になるが読み取られないランダムな文字にもかかわらず、すべてが正常に機能しました。
あるいは、整数型 (および類似の型) について言えば、 が提供する関数ctype.h
を使用できます。