我定义了一个整型n,用scanf输入值,然后又用到swicth中,但当我输入字符的时候却会进入死循环
5条回答 默认 最新
- MarkHan_ 2023-03-07 09:02关注
该回答引用GPTᴼᴾᴱᴺᴬᴵ
这是因为当你输入字符时,scanf函数会将字符留在输入缓冲区中,而switch语句又会不断读取缓冲区的内容进行匹配,导致了死循环。为了避免这种情况,可以在使用scanf函数后使用fflush(stdin)函数清空输入缓冲区,或者使用getchar函数将输入缓冲区中的字符读取并忽略掉。例如:
int n; scanf("%d", &n); fflush(stdin); //清空输入缓冲区 switch(n) { //... }
或者:
int n; scanf("%d", &n); while(getchar() != '\n'); //读取并忽略输入缓冲区中的字符 switch(n) { //... }
这样就能避免由于输入错误类型导致的死循环问题。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥40 微信小程序 使用vant组件ActionSheet 下拉面板,内容区域滚动会触发。scroll-view自定义下拉刷!即使设置停止下拉刷新也不行。
- ¥15 专业问题提问,7月5号2点之前
- ¥15 使用rml 2016.10a数据集做半监督学习的自动调制识别
- ¥25 使用cube ai 导入onnx模型时报错
- ¥15 关于#微信小程序#的问题:用一个网页显示所有关联的微信小程序数据,包括每个小程序的用户访问量
- ¥15 root的安卓12系统上,如何使apk获得root或者高级别的系统权限?
- ¥20 关于#matlab#的问题:如果用MATLAB函数delayseq可以对分数延时,但是延时后波形较原波形有幅度上的改变
- ¥15 使用华为ENSP软件模拟实现该实验拓扑
- ¥15 通过程序读取主板上报税口的数据
- ¥15 matlab修改为并行