【发布时间】:2014-01-28 18:48:08
【问题描述】:
我在 while 循环中使用 scanf 时遇到了一些问题。 我想制作一个程序,要求用户写入三个整数并将它们保存在三个位置的数组中。如果用户写了一些不是整数的东西,程序应该继续请求一个整数,直到他输入它。但它不能正常工作。
所以我试图用这段代码来简化问题:
#include <stdio.h>
int main()
{
int num1=1;
int num2=2;
int num3=3;
printf ("write a number\n");
scanf("%i", &(num1));
printf("%i\n",num1);
printf ("write a number2\n");
scanf("%i", &(num2));
printf("%i\n",num2);
printf ("write a number3\n");
scanf("%i", &(num3));
printf("%i\n",num3);
}
如果输入是 3 个整数,则没有问题。但是,如果您为第一个整数写一个字符,例如 a,则不会扫描其他 2 个值,它只是写: 一种 2 3 最后两个值是初始化值。
谁能告诉我该怎么做?
【问题讨论】:
-
你必须使用
fgets()。 -
感谢您的帮助。但是你能解释一下发生了什么吗?
-
@Trouble-lling 实际上,我并不完全知道。我不使用
scanf(),完全是因为它像这样的不当行为。