getch与getchar区别

getch():
  所在头文件:conio.h
 函数用途:从控制台读取一个字符,但不显示在屏幕上
getchar():
所在头文件:stdio.h
  getch与getchar基本功能相同,差别是getch直接从键盘获取键值,不等待用户按回车,
  只要用户按一个键,getch就立刻返回, getch返回值是用户输入的ASCII码,出错返回-1.
  输入的字符不会回显在屏幕上.getch函数常用于程序调试中,在调试时,在关键位置显示
  有关的结果以待查看,然后用getch函数暂停程序运行,当按任意键后程序继续运行.

易错点:
  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();
      如果情况允许)代替此功能或更换一款编译器。
时间: 2024-12-29 23:57:00

getch与getchar区别的相关文章

getch()和getchar()之再讨论

原文:getch()和getchar()之再讨论 在C语言的字符处理函数中,getch()和getchar()是经常让人迷惑的两个函数,他们都有一些“奇怪的”特点让初学者摸不着头脑.两个函数有很多相似之处,却又有很大的不同.下面是两个函数的说明: int getch( void ); Get a character from the console without echo int getchar ( void );   Get character from stdin, Returns the

getch 和 getchar 在 windows 和 unix下的区别

注意getch()是从console读取,(非标准函数) getch()需要的头文件是<conio.h>. 而getchar()是从stdin,一般是指键盘 windows平台下ENTER键会产生两个转义字符 \r\n, \r : 回到开头的地方. \n : 去到下一行开头 因此,getch()读到 \r 时就会返回他的ASCII码13.(后面的被无视了) 奇怪的问题是为什么getchar()会返回10呢? 前面不是说过返回第一个字符吗? 这的确会让人费解.实际上产生这个结果的原因是, get

getch和getchar的区别

造冰箱的大熊猫@cnblogs 2018/11/30 1.getc() 头文件:stdio.h 函数声明:int getc ( FILE * stream ); 功能: - 返回流(stream)当前位置的值,流的指针挪向下一个位置. - 如果读取失败,返回值为EOF,流的ferror被置位. - 如果已抵达流结尾,返回值为EOF,流的feof被置位. 2.getchar() 头文件:stdio.h 函数声明:int getchar ( void ); 功能:等效于getc ( stdin ).

求解c语言关于getch和getchar

8cp58z运芽灾涂磐街<http://weibo.com/20180413p/230927983125419026817024> qv26va众饰献啪礁硬<http://weibo.com/p071p790p/230927983054065086763008> tqffgr痉幢飞苑试诔<http://weibo.com/20180413p/230927983045238123663360> 711jiv寻渭战蘸弊滥<http://weibo.com/201804

getchar getche getch的区别

getchar 由宏实现:#define getchar() getc(stdin). getchar有一个int型的返回值.当程序调用getchar时.程序就等着用户按键.用户输入的字符被存放在键盘缓冲区中.直到用户按回车为止(回车字符也放在缓冲区中).当用户键入回车之后,getchar才开始从stdin流中每次读入一个字符.getchar函数的返回值是用户输入的第一个字符的ASCⅡ码,如出错返回-1,且将用户输入的字符回显到屏幕.如用户在按回车之前输入了不止一个字符,其他字符会保留在键盘缓存

gets、scanf和getchar之间的区别

gets 1. get函数读取数据时,接受的数据包括数据和回车符.即:读取数据后输入流没有输入 操作动作. 2. scanf函数读取数据时,接受的数据只有数据,不包括回车符.即:读取数据后输入流 还存在回车符操作动作. 3. getchar函数读取一个字符数据时,接受的数据只有一个字符,不包括回车符.即: 读取一个字符数据后就默认输入数据结束.读取数据后输入流还存在回车符操作动作. gets(s)函数与scanf("%s:",&s)/* scanf("%s"

getchar()&amp;putchar()&amp;stdio.h

getchar():从stdio流中读字符. eof(end of file):文件结束符,在while循环中以eof作为文件结束标志.可以是文件(file),这种以EOF作为文件结束标志的文件必须是文本文件,在文本本件中,数据都是以字符的 ASCII代码值的形式存放,我们知道ASCII代码值的范围0-255,不可能出现-1,因此可以用EOF作为文件结束标志:也可以是标准输入(stdin).EOF是一个定义在stdio.h的常量,一般等于-1.在linux系统中,EOF根本不是一个字符,而是当系

getchar()用法 【转】

1.从缓冲区读走一个字符,相当于清除缓冲区 2.前面的scanf()在读取输入时会在缓冲区中留下一个字符'\n'(输入完s[i]的值后按回车键所致),所以如果不在此加一个getchar()把这个回车符取走的话,gets()就不会等待从键盘键入字符,而是会直接取走这个“无用的”回车符,从而导致读取有误 3. getchar()是在输入缓冲区顺序读入一个字符(包括空格.回车和Tab) getchar()使用不方便,解决方法: (1)使用下面的语句清除回车: while(getchar()!='\n'

getchar()用法

getchar() 1.从缓冲区读走一个字符,相当于清除缓冲区 2.前面的scanf()在读取输入时会在缓冲区中留下一个字符'\n'(输入完s[i]的值后按回车键所致),所以如果不在此加一个getchar()把这个回车符取走的话,gets()就不会等待从键盘键入字符,而是会直接取走这个“无用的”回车符,从而导致读取有误 3.getchar()是在输入缓冲区顺序读入一个字符(包括空格.回车和Tab) getchar()使用不方便,解决方法: (1)使用下面的语句清除回车: while(getcha