问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

C语言换行符和回车符的疑问

发布网友 发布时间:2022-05-20 06:26

我来回答

5个回答

热心网友 时间:2023-10-26 13:36

这个是和缓冲区有关的,用户输入的数据是保存在缓冲区的,然后执行:scanf、gets等会从缓冲区读数据。
在执行完scanf之后执行getcha确实接收到了‘\n' ,这是因为scanf只接收了数字,缓冲区还有输入的'\n' ,当调用getchar的时候不需要你再输入它就已经接收到了数据,如果你把if去掉,那gets也不会等待你输入,直接接收缓冲区的回车符。
在执行完scanf后想接收字符类数据就必须把缓冲区清空(flush)或者像这里调用一次getchar,这样gets函数才能顺利执行。

不知道我这样讲你能不能明白,还有疑问可以接着问......追问谢谢,解决了一些问题,但还有个疑问,如果scanf输入完毕敲了回车后产生的是\n,那\r 这个“回车符”要怎么才会产生?它的作用又是什么?

追答C语言中:
\r 是转义字符,你在用:
printf("abcd\rfd\n");
输出时就知道\r的作用了(定位光标到行首),输出结果:fdcd(先输出abcd,\r把光标定位到行首,输出fd会把原来的ab掩盖掉)

C语言中enter代表的\n,所以用enter是产生不了 \r 符的
在操作系统中enter就不同了:
PC/DOS Enter -> \r\n
苹果 Enter -> \r
UNIX Enter -> \n
这也是为什么系统之间的文件不兼容的一点原因,用windows处理UNIX的文件,所有文字会变成一行。

热心网友 时间:2023-10-26 13:37

因为 你在输入数据后会按 键盘上的回车键(是 '\n')
scanf 遇到回车键会结束读取数据,但是不会将 '\n' 从键盘缓冲区读出,便会在键盘缓冲区

如果加 getchar(),便会读出 '\n'
如果没有, 等到gets()读取键盘缓冲区内容是,发现'\n',认为读取结束,便返回,虽未读取任何字符,但是会读出'\n',对于gets()来说,'\n'不是它要读取的内容,便会丢弃!

热心网友 时间:2023-10-26 13:37

问的问题好奇怪,程序既没有return ,exit,也没有堆栈溢出,怎么会失效?

建议你在return 0;之前加一句printf("main end.\n");你就知道程序没有失效了。

另外关于\r还是\n,系统会自动帮你转换成\n,按照你这个程序的写法你只需要在程序里面判断\n就可以了,多余你不用考虑。

热心网友 时间:2023-10-26 13:38

原因是在这两个函数上getch()和scanf()上.'\n'和'r'其实都是回车键产生的字符.只是scanf()或getchar()遇到回车键就会获得'\n'
而getch()遇到回车就得到'\r',为了检验我所说.写了程序检验:
main()
{
char a;
scanf("%c",&a);
printf("%d",a);
getch();
}
/*结果是10,也就是'\n'*/
main()
{
char a;
a=getch();
printf("%d",a);
getch();
}
/*结果是13,就是'\r'*/
造这个的原因是stdin流.因为getch()不从stdin流中读取数据,而是读取用户即时输入数据.

热心网友 时间:2023-10-26 13:38

C语言中用“printf”输出时,换行符是'\n',回车符是'\r'。
C语言中用“scanf”获取输入值时,获取的“敲键盘回车键产生的字符”是换行符。
你把if语句去掉之后,“gets(name) ;puts(name) ;”这两句语句没有失效,而是把换行符获取、输出了。由于你没有在这两句语句后面放置暂停语句,这两句语句把换行符获取、输出后程序直接结束了,没有让你看到效果,所以你认为这两句语句失效了。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
找专业防水队做完还漏水怎么维权 法院会受理房屋漏水造成的纠纷吗? 巴西龟最长活多久,家养!!! 养胃的药最好的是什么啊 婴儿积食发烧不愿吃药怎么办 板门穴位在哪个部位 手机设置放偷看的方法? 凝结水回收器生产厂家? 个人账户养老金预测公式:现有5万元,缴费20年,能领多少钱? 临沂比较有名的男装品牌 Word表格下的换行符删除不了,怎么回事 Unix换行符是怎么回事啊?? word中删除换行符后,仍然显示换行是怎么回事? 我的被人恶意投诉不能用了,怎样才能恢复? 手机验证码怎么获取 沧州市哪里有24小时宠物医院 会计人员在进行会计核算时收到一张假工资表,应该怎么处理 谁知道Tandem怎么用?为什么打开之后要上goole play 更新 学校发的表格,怎么填? 群里表格怎么才能填字进去,我要填好发给别人 群里发的表格需要填,不知道怎么填的 初中生适不适合看英文小说? 反映中学生校园生活的小说,600字 求《感动中学生的100篇小小说》内的文章 适合初中生的言情小说 曲阳县苗会良通缉令 曲阳县地头蛇是谁 曲阳黑社会苗会良 曲阳县兴民小额贷款有限公司怎么样? 苗会良打了架自己跑了。。把小弟们都让他供出来了 常量中有换行符 是怎么回事 c语言fgets函数最后一个换行符怎么回事,我用fgets输入两个字符串,一个是pig big第二 你好!我的被别人恶意举报了,怎么办? 是不是被人举报了,就会显示出现异常 我被人恶意举报了,有苦难说,找客服也打不通,也不回我,我真的是无缘无故被封,该怎么投诉解封? 我被人恶意举报了,有苦难说,找客服也打不通,也不回我,我真的是无缘无故被封,该怎么投诉解封? 我的被别人恶意举报,导致我封号了,得怎么办啊 被别人举报封了怎么办? 携程旅行里面的优惠券是真的可以用的吗 新蛋的携程优惠券有什么用?有效期是到什么时候? 携程标明担保的酒店,能使用优惠券吗? 我的被人恶意举报了,手机号不用了,怎么才能解封 我注册了滴滴,不跑有什么坏后果没 如果我注册了滴滴司机,但又很少跑,会怎样 和钻石陆老五隐婚_by诗换花_txt全文阅读,百度网盘免费下载 和影帝隐婚的日子_by北途川_txt全文阅读,百度网盘免费下载 求小说《说好的隐婚呢》作者阿宁儿的全文 毛衣裙起静电怎么办,毛衣裙起静电吸腿怎么办,毛衣 飞鱼星P30怎么样?飞鱼星P30好吗 switch舞力全开30分钟健身舞曲多少卡路里