鱼C论坛

 找回密码
 立即注册
查看: 3770|回复: 4

关于接受Enter键\r和\n的问题

[复制链接]
发表于 2013-1-25 13:54:39 | 显示全部楼层 |阅读模式
10鱼币
本帖最后由 1079629687 于 2013-1-26 10:54 编辑

我用下面一段程序来测试Enter键,我知道\r不进入缓存区,所以用getch()来,后面\n进入缓存区,用getchar()来。
但是呢, 要输入两次Enter,为什么呢?
  • #include <stdio.h>
  • main()
  • {
  •         int a, b;
  •         a = getch();
  •         b = getchar();
  •         printf("%d %d", a, b);
  • }

复制代码
结果:  输入: Enter Enter   
            输出: 13 10

最佳答案

查看完整内容

getchar()跟getch()的不同是getch()不用等待用户按下回车才结束返回,而getchar()需要等用户按下回车才返回。所以你的第一个回车进入了输入流,第二个回车表示输入结束的意思。 PS,getch()不可移植的,所以建议少用,实际操作尽量用getchar()代替或自己写模拟过程代替。
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-1-25 13:54:40 | 显示全部楼层
getchar()跟getch()的不同是getch()不用等待用户按下回车才结束返回,而getchar()需要等用户按下回车才返回。所以你的第一个回车进入了输入流,第二个回车表示输入结束的意思。

PS,getch()不可移植的,所以建议少用,实际操作尽量用getchar()代替或自己写模拟过程代替。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-1-26 07:55:16 | 显示全部楼层

甲鱼哥, 我就是知道getch和getchar的差别才用这个的,因为我想验证下Enter键有回车换行的功能,据我所知,回车不进入缓存区,所以我用getch来接收这个回车字符,因为及读及显;换行进入缓存区,我采用getchar来接收,getchar遇换行就结束。
这就是我一上的思路,我觉得没问题啊?    求教甲鱼哥!麻烦了
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-1-26 17:47:36 | 显示全部楼层
1079629687 发表于 2013-1-26 07:55
甲鱼哥, 我就是知道getch和getchar的差别才用这个的,因为我想验证下Enter键有回车换行的功能,据我所知 ...

这么说吧,不同操作系统不同编译器得到的结果是不同的,我这边是一次退格一次回车完成输入,输出结果为8和10.
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-1-26 19:43:44 | 显示全部楼层
小甲鱼 发表于 2013-1-26 17:47
这么说吧,不同操作系统不同编译器得到的结果是不同的,我这边是一次退格一次回车完成输入,输出结果为8和 ...

谢谢甲鱼哥    我用的是TC,   麻烦了啊
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-8-8 21:58

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表