0

cプログラムで許可されているタイプのみをスキャンしようとしました。整数の変数があります。ユーザー入力が文字のときにもう一度スキャンしたいと思います。

   int usercount;

   do{
     printf("enter user count");
     scanf("%d",&usercount);
   }
   while(!isdigit(usercount));

しかし、入力がcharの場合、それは無限ループになります。誰か助けてもらえますか?

4

1 に答える 1

1

scanf()関数には戻りがあります。これは、成功した「変換」の数を示します。この場合、入力を整数として解釈できなかった場合は0を返します。コードは戻り値を検査する必要があります。

一般に、バッファリングされた入力キューに残っている「もの」の感度を下げるには、fgets()を使用して一度に1行全体を読み取り、 sscanf()(またはstrtoul())を使用してデータを解析する必要があります。

于 2012-12-02T11:18:12.590 に答える