当前位置:文档之家› getchar和getch和getche的区别及scanf与gets的区分

getchar和getch和getche的区别及scanf与gets的区分

getchar和getch和getche的区别


getchar有一个int型的返回值.当程序调用getchar时.程序就等着用户按键.用户输入的字符被存放在键盘缓冲区中.直到用户按回车为止(回车字符也放在缓冲区中).

getchar函数的返回值是用户输入的第一个字符的ASCII码,如出错返回-1,且将用户输入的字符回显到屏幕.如用户在按回车之前输入了不止一个字符,其他字符会保留在键盘缓存区中,等待后续getchar调用读取.也就是说,后续的getchar调用不会等待用户按键,而直接读取缓冲区中的字符,直到缓冲区中的字符读完为后,才等待用户按键.


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

相同点都是从键盘上读入一个字符。
getch()从键盘读入一个字符且不回显。

getch():
所在头文件:conio.h
函数用途:从控制台读取一个字符,但不显示在屏幕上
函数原型:int getch(void)
返回值:读取的字符
例如:
char ch;或int ch;
getch();或ch=getch();
用getch();会等待你按下任意键,再继续执行下面的语句;
用ch=getch();会等待你按下任意键之后,把该键字符所对应的ASCII码赋给ch,再执行下面的语句。
易错点:所在头文件是conio.h。而不是stdio.h。

getchar()函数等待输入直到按回车才结束,回车前的所有输入字符都会逐个显示在屏幕上,但只有第一个字符作为函数的返回值。


getch() 无回显,无须回车
getche() 有回显,无须回车
getchar() 有回显,须回车



gets函数可以一次接收一行输入串,其中可以有空格,也就是说空格可以做为字符串的一部分输入.
而scanf函数接收的字符串不会含有空格,即遇到字空格时,认为字符串输入结束,也就是说空格是scanf默认的结束符号。
--------------------------------------------
scanf和gets不能混合使用,如果一个程序中用scanf的话,一般不能再用gets,反之亦然。 1:...
2:gets()输入字符串时,可以包含空格在内的字符,在回车时,自动将字符串结束标志'\0'赋予字符数组最后一个元素。scanf函数不能输入包含空格字符的字符串,也就是说空格是scanf默认的结束符号。
3:如果像你在你的程序中提到的只把for循环中gets改为scanf的话,在后面该输入的时候直接跳过的原因是,在结束前一个scanf输入时输入的回车被后一个gets输入时接受,也就是说前一个地方输入的“数据+回车”分别

被两个地方接受。此种问题会出现在gets和scanf交接处。只需要在程序中统一改为scanf和gets就可以了
https://www.doczj.com/doc/546979500.html,/jisuan/C/downloads/ch08.ppt#264,9,幻灯片 9
赋值运算符按照“自右而左”的结合顺序,答案a的运算顺序是:先将4赋给变量b,3赋给变量a,然后计算a=a-b*a,运算后变量a的值为-8,最后计算a=a+a,此表达式最终结果为-16,c语言的表达式很简洁,但是心中必须清楚运算的顺序。模运算要求两个数必须是整型数据,故答案b是错误的。答案c是错误的原因是不能将一个常数赋给一个表达式。答案d也是错误的,应该给float加上括号才对,需要强调的是强制类型转变后变量i本身的数据类型没有改变,强制类型运算后得到一个float型的中间变量。

https://www.doczj.com/doc/546979500.html,/question/264600819.html?an=0&si=7

相关主题
文本预览
相关文档 最新文档