标题:我有一个C语言的简单的问题,请各位赐教!
只看楼主
lq317883361
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2007-4-20
 问题点数:0 回复次数:9 
我有一个C语言的简单的问题,请各位赐教!
for(;;)
{
printf("please input char and data!\n");
scanf("%c,%d,%d",&ch1,&x.num,&x.arrtime);
switch(ch1)
{
case 'A':arrive(s1,p,x);
break;
case 'D':delive(s1,s2,p,x);
break;
case 'E':flag=False;
printf("over!\n");
break;
default: printf("input data error!\n");
}
if(flag==False) break;
}
这个程序运行错误,输入第一串的数据的时候正确,当输入第二串数据的时候却是先执行default,然后再显示的printf语句,然后才运行,以的后每输入一串数据都是这样,我不知道错在那里了,请各位赐教.
搜索更多相关主题的帖子: C语言 break case printf 
2007-04-20 12:24
crackerwang
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:833
专家分:0
注 册:2007-2-14
得分:0 
在scanf()前加一个fflush(stdin)就可以了

2007-04-20 13:23
限量版猪头
Rank: 2
等 级:论坛游民
威 望:1
帖 子:165
专家分:30
注 册:2006-2-5
得分:0 

不明白你的意思?你想实现什么功能?


2007-04-20 14:49
lq317883361
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2007-4-20
得分:0 
非常感谢楼上的兄弟,我运行了果然正确,但是我不知道为什么,我希望你能告为什么要加这样的一个函数吗?
还有就是这是一个什么样的函数.我在这里谢谢这位大侠了.非常的感谢.
2007-04-20 18:23
byq414
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2007-4-3
得分:0 
看看下面的那个帖子,讲的很清楚!!!

[原创]C/C++ 误区二 —— fflush(stdin)


http://bbs.bc-cn.net/viewthread.php?tid=24307&extra=&page=100
2007-04-20 21:17
财神
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2007-4-20
得分:0 
路过!!!!!!!
2007-04-20 22:14
lq317883361
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2007-4-20
得分:0 
谢谢楼上的兄弟了
2007-04-20 22:41
lq317883361
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2007-4-20
得分:0 
我看了一下,还是不清楚,那一位大侠能讲得更清楚一些.数据一但进入缓存就不会消失吗?
2007-04-20 23:08
k_summer7
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2007-3-19
得分:0 
问题的原因在于你第二次输入时的东西被scanf吃了一个空格,所以运行后,找不到匹配的字符,导致运行default;
fflush(stdin)的作用在于刷新标准输入缓冲区,把输入缓冲区里的东西丢弃;
在c语言中使用scanf()函数在键盘上接受字符型数据时,必须用fflush(stdin)这个来清楚上一次存储的数据,不然字符型数据不会正确的存储;
2007-04-21 14:35
lq317883361
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2007-4-20
得分:0 
我现在明白了,谢谢各位大侠们的帮助,楼上大侠们讲得很清楚了,所以我不在总结了,谢谢各位了.
2007-04-21 16:35



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-133428-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.549400 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved