我正在尝试获取整数输入,并尝试了我能找到的最基本的方法。但是,只要某个东西不是整数,它就会陷入无限循环。我相信它是由fgets功能引起的。我尝试了一些我在这个网站上找到的解决方案,但都没有。代码如下
int getint()
{
int number;
char input[4];
fgets(input, 4, stdin);
while ( atoi(input) < 0 || ( strcmp(input, "0") != 0 && atoi(input) == 0 ) )
printf("Insert a non negative number: ");
fgets(input, 4, stdin);
number = atoi(input);
printf("%d\n", number);
return number;
}
答案 0 :(得分:0)
如果要在循环或if语句中写入多个语句,则必须使用大括号{}
来定义循环中的哪些语句。
在您的代码中,只有printf("Insert a non negative number: ");
语句在循环中,并且没有任何内容在循环中更改input
的值,因此如果循环的条件是是的,它永远都是真的。
将其更改为:
while ( atoi(input) < 0 || ( strcmp(input, "0") != 0 && atoi(input) == 0 ) )
{
printf("Insert a non negative number: ");
fgets(input, 4, stdin);
}