C语言字符输入判断问题,急求解决办法

weasiji 2008-04-18 06:40:07
void insert(){
PCB *p1,*p2;
char ch;
printf("按下i增加新进程,其他键继续\n");
ch=getchar();
getchar();
if(ch=='i'){
p1=head;
head=(PCB*)malloc(LEN);
printf("输入:\n");
scanf("%s %d %d",head->pid,&head->rtime,&head->super);
head->state="Wait";head->htime=0;
head->next=p1;
}
}
在主函数中循环调用insert();输入字符i进行判断,结果每次if都无法正确判断,不知如何修改。急求解决。。。。。。
...全文
165 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
weasiji 2008-04-18
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 c_spark 的回复:]
引用 2 楼 jieao111 的回复:
ch=getchar();
//getchar(); 这个不需要了吧

在每次读入字符前,清空缓标准输入
fflush(stdin);
ch = getchar();
//getchar();
[/Quote]

我也感觉到这次如果连续输入ii,后面if就可以了,原来不知道fflush(stdin) 这个功能;
已经解决,谢谢各位
BattleCore 2008-04-18
  • 打赏
  • 举报
回复
输入i之后如果按下回车,可能会出现问题,因为一个回车是由013和010组合而成。如果每输入一个字符就按一次回车的话,应该:
ch = getchar();
getchar();
getchar();
多写一个getchar()才行

或者可以使用另一个函数_getch(),包含在conio.h中,可以在输入一个字符后不通过会车就立刻往下执行,不缓冲
ch = _getch();就行了
c_spark 2008-04-18
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 jieao111 的回复:]
ch=getchar();
//getchar(); 这个不需要了吧
[/Quote]
在每次读入字符前,清空缓标准输入
fflush(stdin);
ch = getchar();
//getchar();
jieao111 2008-04-18
  • 打赏
  • 举报
回复
ch=getchar();
//getchar(); 这个不需要了吧
c_spark 2008-04-18
  • 打赏
  • 举报
回复
函数本身没有问题,在getchar()前加上 fflush(stdin)试试看...

70,035

社区成员

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

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