getch()的精辟诠释

getch()

  getch():
  所在头文件: conio.h
  函数用途:从控制台读取一个字符,但不显示在 屏幕
  函数原型:int getch(void)
  返回值:读取的字符
  例如:
  char ch;或int ch;
  getch();或ch=getch();
  用getch();会等待你按下任意键,再继续执行下面的语句;
  用ch=getch();会等待你按下 任意键之后,把该键 字符所对应的ASCII码赋给ch,再执行下面的语句。
  易错点:
  1.所在头文件是conio.h。而不是 stdio.h
  2.在使用之前要调用initscr(),结束时要调用endwin()。否则会出现不输入字符这个函数
  也会返回的情况。
  3.在不同平台,输入回车,getch()将返回不同数值,而getchar()统一返回10(即\n)
  1)windows平台下ENTER键会产生两个 转义字符 \r\n,因此getch返回13(\r)。
  2)unix、 linux系统中ENTER键只产生 \n ,因此getch返回10(\n)。
  3)MAC OS中ENTER键将产生 \r ,因此getch返回13(\r)。
  getch();并非标准C中的函数,不存在C语言中。所以在使用的时候要注意程序的可移植性。国内C语言新手常常使用getch();来暂停程序且不知道此函数来源,建议使用getchar();(如果情况允许)代替此功能或更换一款 编译器
<think>好的,用户想了解C/C++编程中_getchgetch函数的区别。首先,我需要回忆这两个函数的基本信息。记得它们都属于conio.h头文件,用于从键盘获取字符输入,不需要回车键。但区别可能涉及到编译器平台的不同。 然后,查阅一下引用资料。引用2提到conio.h中的getch和_getch有这样的效果,即不需要回车就能接收输入。引用3讨论了getchar和fgetchar的区别,但这里可能不直接相关。引用4是关于创建头文件的教程,暂时用不上。用户的问题集中在_getchgetch的区别,可能需要更深入的信息。 接着,我应该考虑这两个函数的历史和编译器支持。比如,Microsoft的编译器可能将getch视为已弃用,推荐使用_getch,这是为了符合更安全的函数命名规范。此外,_getch可能更符合标准,而getch可能在某些旧版本中存在兼容性问题。 然后,检查函数原型是否有差异。通常,两者的参数和返回值应该相同,都是int类型,不需要参数,返回输入的字符。不过,某些编译器可能在实现细节上有不同,比如线程安全或错误处理方面。 另外,用户可能想知道在实际编程中应该使用哪个函数。需要建议使用符合当前编译器和项目标准的版本,比如在Visual Studio中使用_getch,而在旧项目或特定编译器中可能使用getch。同时,提到可移植性问题,因为conio.h不是标准库的一部分,主要在Windows环境下可用。 最后,总结两者的主要区别在于编译器支持和命名规范,功能上相同,但推荐使用带下划线的版本以符合现代标准。可能还需要提醒用户注意跨平台问题,如果需要可移植的解决方案,可能需要其他方法替代。</think>在C/C++编程中,`getch`和`_getch`函数的功能相同,但存在以下关键区别: ### 1. 编译器兼容性差异 - **`getch`**:传统函数名,早期编译器(如Turbo C)直接支持 - **`_getch`**:现代编译器(如MSVC、GCC)推荐使用的安全版本,符合ISO标准命名规范 Microsoft Visual Studio将`getch`标记为**已弃用**,强制要求使用带下划线的版本[^2][^4] ### 2. 函数原型对比 ```c // 传统实现(可能触发编译器警告) int getch(void); // 现代标准实现 int _getch(void); ``` 两者参数和返回值完全一致:无参数,返回`int`型ASCII码 ### 3. 使用建议 - 新项目优先使用`_getch`以避免兼容性问题 - 维护旧代码时需注意编译器版本差异 - Linux/Unix系统需通过`curses`库实现类似功能(conio.h非标准库) ### 4. 典型应用场景 ```c #include <conio.h> void input_handling() { printf("按任意键继续..."); int ch = _getch(); // 无回显单字符输入 printf("\n你按下了: %c\n", ch); } ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值