关于scanf在for循环中的输入问题:求解

pang1567 2011-05-11 10:41:32
我建立一个数组char a[6],然后用for循环依次将每个字符输入送入数组中,可是每次调用一次scanf,for循环要执行两次,也就是说我只能输入三个字符。本来是准备送入“abcdef”的,可是只能送入“abc”然后就输出了“abc”。我就不懂了,请各位大侠解释解释:::

#include <stdlib.h>
#include <stdio.h>
void main ()
{
char a[6];
printf("请依次输入六个字符:\n");
for(int i=0;i<6;i++)
{
scanf("%c",&a[i]);
//printf("i=%d\n",i); //用来测试for循环的执行次数
}
for(int i=0;i<6;i++)
{
printf("%c\n",a[i]);
}
}

还有一个问题就是我用cin代替scanf是可以执行的,而且正常。我用cin,当我依次输入“a b c d e f”时,可以正常的输入和输出。但是我有个疑问,在输入的时候,我在每个字符之间加一个空格表示输入结束,但是我可以一直输入,就是输入“a b c d e f g h……”输出的时候只输出了“a b c d e f”.我是想我输入的时候只能输入“a b c d e f”然后程序就不能再输入任何字符,表示循环结束。就是限制输入。有没有什么函数可以做到这点呢???
都是关于输入的问题,在和方面掌握着实比较浅, 求解释&呵呵
...全文
2148 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
fj8808 2011-05-12
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 neolyao 的回复:]

当连续执行scanf的时候记着清楚缓冲区,不然你输入一个字符后又按了一次回车,相当把回车赋给下一次循环的scanf
for(int i=0;i<6;i++)
{
scanf("%c",&a[i]);
fflush(stdin);//也可以用getchar();来吸收回车
//printf("i=%d\n",i); ……
[/Quote]
如此美丽的你 2011-05-12
  • 打赏
  • 举报
回复 1
当连续执行scanf的时候记着清楚缓冲区,不然你输入一个字符后又按了一次回车,相当把回车赋给下一次循环的scanf
for(int i=0;i<6;i++)
{
scanf("%c",&a[i]);
fflush(stdin);//也可以用getchar();来吸收回车
//printf("i=%d\n",i); //用来测试for循环的执行次数
}

jannals 2011-05-11
  • 打赏
  • 举报
回复
scanf输入时字符间不能有空格和制表符。而cin是流输入当然就可以了。可以用getchar()。选一个结束标志。
無_1024 2011-05-11
  • 打赏
  • 举报
回复
还有就是你的 ' '或者 '\n'也被scanf读取了
無_1024 2011-05-11
  • 打赏
  • 举报
回复
fflush(stdin);
这个就是你每次输入之后 只有一个被读取 其余的全部被刷新了
ljt3969636 2011-05-11
  • 打赏
  • 举报
回复
你打了一个字回一次车,相当于一个字加一个‘\n’当然是执行两次循环
jernymy 2011-05-11
  • 打赏
  • 举报
回复

for(int i=0;i<6;i++)
{
scanf("%c",&a[i]);
fflush(stdin);
//printf("i=%d\n",i); //用来测试for循环的执行次数
}

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧