为什么while循环在C中终止

时间:2016-03-15 13:33:33

标签: c loops input

只测试一些代码;应该运行以下,直到我输入'n'。但它在一轮后停止。任何人都可以解释它,并帮助我实现我想要的东西吗?

#include <stdio.h>
int main ()
{
  char another = 'y';
  int num;

  while ( another == 'y' )
    {
        printf ("Enter an number ");
        scanf ("%d", &num);
        printf ("square of %d is %d", num, num * num);         
        printf ("\nWant to enter another number y/n\n");
        scanf ("%c", &another);

    }

}

感谢。

我非常感谢每一个人的评论。我在网上搜索了GDB,并在以后使用它。我不得不说这使得识别问题变得更加容易。 非常感谢。

2 个答案:

答案 0 :(得分:4)

%c

之前添加空格
scanf (" %c", &another);

在前一个scanf()之后,在缓冲区中吃掉左边的换行符。

1)使用main()

的标准定义
int main(void) //if no command line arguments.

2)检查scanf()(以及其他函数)的返回值,以确保读取的值没有任何错误。

答案 1 :(得分:-1)

使用

scanf (" %c", &another);
       ^^^^^

最好还是写

printf ("square of %d is %lld", num, ( long long int )num * num);
                         ^^^^        ^^^^^^^^^^^^^^^^^^^^