为何调用getch()后质数判断程序的.exe窗口仍自动关闭?
解决质数判断程序输入后窗口秒关的问题
问题场景
这段用于课程作业的质数判断C语言代码,逻辑看似正常,但在MWGin编译生成.exe后,输入数字程序窗口立刻关闭——明明已经调用了getch():
#include <stdio.h> #include <conio.h> void main() { int x=0,y=0,z=0; printf("Enter a number:"); scanf("%d", &x); z=x/2; for(y=2; y<=z; y++) { if(x%y==0) { printf("%d is not prime", x); break; } } if(y==z+1) { printf("%d is prime", x); } getch(); }
(注:使用conio.h是学校要求,问题已解决)
问题原因
scanf("%d", &x)读取完数字后,你输入时按下的回车符会留在输入缓冲区里。后续的getch()会直接读取这个残留的回车,而非等待你手动输入,导致程序直接执行完退出。
解决方法
在getch()之前处理掉输入缓冲区的残留字符即可,两种常用方式:
- 用
fflush(stdin)清空缓冲区:
fflush(stdin); // 清空输入缓冲区的残留字符 getch();
- 用
getchar()单独读取换行符:
getchar(); // 读取scanf留下的回车 getch();
修改后重新编译运行,程序就会等待你按下任意键再关闭窗口。
内容的提问来源于stack exchange,提问作者Adyansh Mishra
相关产品推荐
相关产品推荐

