C语言 循环结构中scanf的问题

Mitchell_C 2020-06-02 10:35:22
这是实现操作系统调度算法的程序中输出界面的部分代码:

int choice = 0;
InitQueue(&readyQueue);
InitQueue(&printQueue);
InitLinkedList(&linkedList);
do {
printf("请输入你要选择的调度算法: ");
printf("1.先来先服务 2.短作业优先 3.时间片轮转 4.优先级调度 5.退出\n");
scanf("%d",&choice);
switch (choice) {
case 1: FCFS(&readyQueue,&printQueue,process,processNum);
break;
case 2: SJF(&linkedList,&printQueue,process,processNum);
break;
case 3: RR(&readyQueue,&printQueue,process,processNum);
break;
case 4: PSA(&linkedList,&printQueue,process,processNum);
break;
default:
break;
}
} while(choice != 5);
DestroyQueue(&readyQueue);
DestroyQueue(&printQueue);
DestroyLinkedList(&linkedList);


操作系统是Win10和虚拟机中的Redhat,IDE都是CLion,现在的问题是:
1.在windows下:(1)这段函数有时能正常运行,有时只有在第一次循环时能够正常输入,但到了第二次循环时,无论输入什么数字、字符再按回车程序都没反应,不是有些问题中的循环被跳过了,而是输入后回车,程序只能换行不运行。
(2)输出有时会空出一个字符的位置,还会自动换行,见下图。但是在redhat下输出的格式没问题。
2.在redhat下,只有第一次循环能输入成功,第二次的问题同上。
如图:
...全文
187 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
chxchxkkk 2020-06-03
  • 打赏
  • 举报
回复
scanf下面加一句getchar()试试
qiu_shaofeng 2020-06-02
  • 打赏
  • 举报
回复
调试下,scanf是否读入错误,导致while死循环。
Simple-Soft 2020-06-02
  • 打赏
  • 举报
回复
可以调试一下看看,到底是怎么回事

70,020

社区成员

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

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