当用户输入正整数而不是字符时,打破循环

时间:2012-10-26 20:22:48

标签: c loops if-statement

目前,我的程序中有一个循环,其格式为:

  #include<stdio.h>

    int main()
    {
    int n;

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

         scanf("%d",&n);

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

我使用if(n&gt; 0)语句的意图是当且仅当用户输入正整数时退出循环。但是,例如,如果用户键入字符“g”,则循环仍将中断,因为将解释ASCII值。如何在用户为n?

输入正整数值时形成此循环以使其中断

1 个答案:

答案 0 :(得分:4)

检查scanf的返回值,该值返回读取的成功输入数:

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

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

我建议您使用fgets将输入读入字符串并使用strtol转换为整数,因为对于@paddy所说的原因,scanf是一个不好的选择。