1

現在、プログラムに次の形式のループがあります。

  #include<stdio.h>

    int main()
    {
    int n;

         while(1)
         {
         printf("Enter a positive number, n");

         scanf("%d",&n);

         if(n>0)
             {
              break;
             }
          }
      }

if(n> 0)ステートメントを使用する私の意図は、ユーザーが正の整数を入力した場合にのみループを終了することでした。ただし、たとえばユーザーが文字「g」を入力した場合、ASCII値が解釈されるため、ループは中断されます。ユーザーがnに正の整数値を入力したときに中断するように、このループを形成するにはどうすればよいですか?

4

1 に答える 1

4

正常に読み取られた入力の数を返すscanfの戻り値を確認します。

int rc = scanf("%d",&n);

if (rc==1 && n>0) {
  ...
}

fgetsを使用して入力を文字列に読み取り、 strtolを使用して整数に変換することをお勧めします。

于 2012-10-26T20:25:56.323 に答える