鱼C论坛

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

[已解决]关于getch()及putch()的顺序问题。

[复制链接]
发表于 2019-12-15 16:03:02 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include <stdio.h>
#include <conio.h>

void main()
{
        char c;
        while(1)               
        {
                c = getch();
                                                  //putch(c);
                if(13 == c)
                {
                        continue;
                }
                else if(27 == c)
                {
                        break;
                }
                putch(c);                  //****此处putch如果写在c = getch();后面输出的方式为什么会有改变?
        }
        getch();
}


例如编译后随便输入一串字符,如若putch(c)按如上代码的位置进行编译 按 Enter 键之后可以接着目前已输入的字符串后面继续输入;
如果将putch(c)的位置改变一下,写在 c = getch() 后面,则每次输入一串字符按 Enter 键之后光标会从已输入的第一个字符开始以目前输入的字符去覆盖掉现有字符


为什么会这样呢?
最佳答案
2019-12-16 14:59:19
本帖最后由 superbe 于 2019-12-16 15:02 编辑

按如上代码的位置的话,在 Enter 时执行的是 continue,相当于忽略这个字符,其它字符正常输入和显示。
放到 c = getch(); 后面的情况,getch() 把 Enter 处理成 '\r' (ascii码13),(这和 getchar() 不同(处理成 '\n', ascii码10)),然后 putch('\r') 会使光标位置移到行首,所以接下来输入的字符会覆盖掉行首的字符。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2019-12-16 11:25:42 | 显示全部楼层
看都没人看么~~~~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-12-16 14:59:19 | 显示全部楼层    本楼为最佳答案   
本帖最后由 superbe 于 2019-12-16 15:02 编辑

按如上代码的位置的话,在 Enter 时执行的是 continue,相当于忽略这个字符,其它字符正常输入和显示。
放到 c = getch(); 后面的情况,getch() 把 Enter 处理成 '\r' (ascii码13),(这和 getchar() 不同(处理成 '\n', ascii码10)),然后 putch('\r') 会使光标位置移到行首,所以接下来输入的字符会覆盖掉行首的字符。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-12-17 21:51:21 | 显示全部楼层
superbe 发表于 2019-12-16 14:59
按如上代码的位置的话,在 Enter 时执行的是 continue,相当于忽略这个字符,其它字符正常输入和显示。
放 ...

初学,您说的意思我大概明白了。
也就是如果将putch(c)放在 c = getch()下面则没有经过continue判断语句,直接输出了"/r",
光标移到首行。
放在如上代码现有位置则所输入的Enter经过了continue,自动忽略掉了。

这么理解是否正确?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-12-18 21:04:29 | 显示全部楼层
是的, 理解正确。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-12 07:32

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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