C-数字检查功能给出无限循环
C- number checking function gives infinite loop
我正在尝试编写一个可以获取数字的小函数。
该功能应该是防白痴的,所以它会在 ie 时发出警告。有人输入了一个字符。
我写了一个像下面这样的函数,但是如果我输入一个非整数,程序就会给我一个无限循环,不断重复 printf "Not a valid number" 所以我永远没有机会进行正确的输入.
代码:
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
for (int ret = 0; ret < 1;)
{
int num;
printf("\n Please input a number: ");
ret = scanf ("%d", &num);
if (ret < 1)
printf ("\nNot a valid number!");
else
printf("\nYou input %d", num);
}
return 0;
}
如何解决?
将这一行 if (y = 0)
替换为 if (y == 0)
。
注意下面一行关于吃掉输入缓冲区的注释。由于您的 scanf 没有在输入缓冲区中找到它要查找的内容,错误的输入就会一直存在并永远失败,除非您对它做一些事情 "eat"。
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
printf("Hello world!\n");
while ('A')
{
int x, y;
printf("\n x: ");
y = scanf ("%d", &x);
printf("\nx = %d", x);
if (y < 1)
{ // eat the input buffer so we can try again
while ( getchar() != '\n' );
printf ("\nWRONG!");
}
}
return 0;
}
我正在尝试编写一个可以获取数字的小函数。 该功能应该是防白痴的,所以它会在 ie 时发出警告。有人输入了一个字符。
我写了一个像下面这样的函数,但是如果我输入一个非整数,程序就会给我一个无限循环,不断重复 printf "Not a valid number" 所以我永远没有机会进行正确的输入.
代码:
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
for (int ret = 0; ret < 1;)
{
int num;
printf("\n Please input a number: ");
ret = scanf ("%d", &num);
if (ret < 1)
printf ("\nNot a valid number!");
else
printf("\nYou input %d", num);
}
return 0;
}
如何解决?
将这一行 if (y = 0)
替换为 if (y == 0)
。
注意下面一行关于吃掉输入缓冲区的注释。由于您的 scanf 没有在输入缓冲区中找到它要查找的内容,错误的输入就会一直存在并永远失败,除非您对它做一些事情 "eat"。
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
printf("Hello world!\n");
while ('A')
{
int x, y;
printf("\n x: ");
y = scanf ("%d", &x);
printf("\nx = %d", x);
if (y < 1)
{ // eat the input buffer so we can try again
while ( getchar() != '\n' );
printf ("\nWRONG!");
}
}
return 0;
}