社区
C语言
帖子详情
为什么scanf放在while(1)外面会出现死循环,放在里面就不会。
m0_56972927
2021-04-07 09:48:22
#include<stdio.h> int main() { char c; scanf("%c",&c); while(1) { if(c=='#')break; if(c>='A'&&c<='z')c-=32; printf("%c",c); } return 0; }
...全文
485
5
打赏
收藏
为什么scanf放在while(1)外面会出现死循环,放在里面就不会。
#include int main() { char c; scanf("%c",&c); while(1) { if(c=='#')break; if(c>='A'&&c<='z')c-=32; printf("%c",c); } return 0; }
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
源代码大师
2021-05-03
打赏
举报
回复
C和C++完整教程:https://blog.csdn.net/it_xiangqiang/category_10581430.html C和C++算法完整教程:https://blog.csdn.net/it_xiangqiang/category_10768339.html
philobing
2021-04-07
打赏
举报
回复
NorZ
2021-04-07
打赏
举报
回复
因为你的循环条件是 1 ,永远为 true,scanf 又在循环外面,导致你没有机会重新输入 c 来更新 c 的值 而 scanf 放在循环里,由于 scanf 本来是阻塞等待输入,因此每一次循环你都可以重新输入 c ,这样你就有机会来退出循环,比如输入 #
qzjhjxj
2021-04-07
打赏
举报
回复
把 scanf("%c",&c);放在while(1){......}外面,只读取键盘输入一次,如果这一次机会if(c=='#')break;没把握住,当然死循环了,while(1)是永远为真。当把 scanf("%c",&c);放到while(1){}内时,就会不停的去读键盘输入,然后if(c=='#')break;判断,就有无限次机会了退出了。
自信男孩
2021-04-07
打赏
举报
回复
不一定呢,如果一开始就输入#就break出循环,不会出现无线循环了。
如果一开始不是输入#,那么while没有break的条件,因此会死循环~
C语言由
scanf
(“%d“,)非法输入字符造成的
死循环
及其解决方案
声明:此文章仅作为C语言学习历程中的思路整理,用于解决入门阶段较为浅显的问题,如有错误还请指正。 现象描述: 代码要求实现用户输入1或2,通过
scanf
("%d",&a)读取这个值,从而判断分属于1或2的两种情况。输入非1,2的数字都应该返回"Invalid Number!",并且要求重新输入数字。 while(a!=1&&a!=2) { printf("Invalid Number!\n"); printf("Enter the number:"); scan
解决
scanf
造成的
死循环
问题
问题描述 在编写C语言程序时,需要使用
scanf
语句从键盘读入一个整数,但是在测试的时候,如果不小心输入了浮点数或者字符的话,那情况就糟了。 比如如下代码: #include <stdio.h> int main() { int a = 0; while (1) {
scanf
("%d", &a); printf("%d\n", a); } } 错误展示1(输入浮点数的错误示范): 错误展示2(输入字符的错误示范): 我们发现,误输入浮点数或者字符,都
会
导致死
C语言判断
scanf
输入的是否为整型,以及由此造成
死循环
的解决办法
aaaaaa第三篇赶上! 判断
scanf
输入的是否为整型 # 需求 很多时候我们需要用
scanf
输入数据,但人为输入的数据可能不符合指定的类型,自然地我们想到了判断输入类型是否正确。 # 实现 那该怎么实现呢?这里我们可以利用
scanf
的返回值:
scanf
返回值:返回成功读入的数据项数 既然这样,那只需要加一个循环,每次检测录入的数据项数是否为全部数据的个数,不是则说明有内容没有录取到(即
出现
非法字符),此时可以输出提示要求重新输入。 自然地我们写出以下代码: //以检查输入的是否一个整型为例(VS201
scanf
函数总结及LeetCode中while(
scanf
())用法
scanf
函数是有返回值的,它的返回值可以分成三种情况 正整数,表示正确输入参数的个数。例如执行
scanf
("%d %d", &i, &j); 如果用户输入"1 2",可以正确输入,返回2(正确输入了两个变量); 如果用户输入"1,1",可以正确输入i,无法输入j,返回1(正确输入了一个变量)。 0,表示用户的输入不匹配,无法正确输入任何值。如上例,用户如果输入",3 4"...
黑马程序员
scanf
死循环
了呢
---------------------- ASP.Net+Unity开发、 .Net培训、期待与您交流! ----- -----------------
scanf
死循环
了呢 ---------------------- ASP.Net+Unity开发、 .Net培训、期待与您交流! ----- -----------------
C语言
70,039
社区成员
243,246
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章