C语言 循环语句中的重复输入问题

while(flag){printf("请输入职工姓名:");gets(Name[i]);printf("请输入该职工号:");gets(Number[i]);i++;P... while(flag)
{
printf("请输入职工姓名:");
gets(Name[i]);
printf("请输入该职工号:");
gets(Number[i]);
i++;
People++;
printf("是否继续输入职工信息(y/n):");
scanf("%c",&c);
if(c=='n'||c=='N')
flag=0;
}

flag为这个循环的开关,控制循环的结束
但是程序运行时,输入y敲回车后,会跳过gets(Name[i]);这条语句,直接下往下运行,

但是找不出错误。。求助。。。
展开
 我来答
卒子的疯狂
2012-11-20 · TA获得超过322个赞
知道答主
回答量:217
采纳率:0%
帮助的人:163万
展开全部
scanf语句后再加一句:
scanf("%c",&c);
fflush(stdin);

这是缓冲区的原因
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
kingkate2009
2012-11-20 · TA获得超过535个赞
知道小有建树答主
回答量:557
采纳率:50%
帮助的人:251万
展开全部
缓冲区的问题,清空缓冲区即可,还有最好用都用scanf来从键盘输入
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
刀下风
2012-11-20 · 超过26用户采纳过TA的回答
知道答主
回答量:129
采纳率:0%
帮助的人:56.6万
展开全部
输入缓冲区有数据 在最后一个scanf()后使用下面语句清除输入缓冲区的数据 :

while(getchar()!='\n') ;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
loboho
2012-11-20 · TA获得超过506个赞
知道小有建树答主
回答量:441
采纳率:100%
帮助的人:409万
展开全部
scanf("%c\n",&c); 即OK
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式