一个关于在for循环里用scanf()输入出错的问题?

来源:百度知道 编辑:UC知道 时间:2024/06/07 23:26:03
我想向大家问个问题:
在下面的代码中,我只想向字符型数组 a[4]中输入四个字符,但是结果是 命令行窗口只能接受两个字符,马上就跳出了for循环,这是为什么?
如果我将 char 该成 int ,再将scanf("%c",&(a[i])); 该成scanf("%d",&(a[i])); 结果运行真确,这又是为什么?
请问那位大侠能帮小弟一把,告诉我为什么?在这里先谢谢了!

#include <stdio.h>
main()
{
int i;
char a[4];
for(i = 0;i < 4; i++)
scanf("%c",&(a[i]));

}

补充: 这里的回车还在流里是因为用的scanf("%c",&(a[i]));的原因(即读入的是字符的原因),在读入其它数据(如整数等)的时候回车会自动删除!
#include <stdio.h>
main()
{
int i;
char a[4];
for(i = 0;i < 4; i++)
{
scanf("%c",&(a[i]));
fflush(stdin);/*原因,你在输入的时候,在输入流中有两个字符(假设你是输入
a然后回车),那么输入流里有一个a还有一个回车,在读入a后回车不
删除,所以 这里用 fflush(stdin)清除流中的其它数据就好了*/
}
for (i = 0; i < 4; i++)
printf("%c\t",a[i]);
printf("\n");

}

你肯定是输入一个字符然后回车了,这样回车也是作为一个字符存进数组的

呵,你在输入时是不是输入一个字符然后点一次回车?别忘了回车也是一个字符啊!你的程序没有问题,可以在输入时连续点4个字符然后点一次回车就可以了!

回车是为asic码为13的字符吧。