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转换为整数,因为由于@paddy 所说的原因,scanf 是一个糟糕的选择。

于 2012-10-26T20:25:56.323 回答