【C语言】输入函数们的盘点:scanf、getchar、getch、getche、gets

您所在的位置:网站首页 scanf函数是一个标准库函数 【C语言】输入函数们的盘点:scanf、getchar、getch、getche、gets

【C语言】输入函数们的盘点:scanf、getchar、getch、getche、gets

2024-07-12 19:20| 来源: 网络整理| 查看: 265

文章目录 C 库函数 - scanf():C 库函数 - getchar():getch:getche:getchar(),getch(),getche()比较:gets:参考链接:

C 库函数 - scanf():

功能: scanf函数从标准输入 stdin 读取格式化输入。 和getchar类似,首先从stdin缓冲区读取字符,如果缓冲区有符合格式要求的数据,及获取数据,返回给程序,指针指向下一个数据,函数结束;如果缓冲区没有符合要求的数据,则等待从键盘输入数据,并且必须以回车键结束,输入的数据存入stdin缓冲区,然后scnaf()从缓冲区获取一个数据并返回,函数结束。

它被称为格式输入函数,即按用户指定的格式从键盘上把数据输入到指定的变量之中。即“通过键盘给程序中的变量赋值”。

头文件: scanf函数是一个标准库函数,它的函数原型在头文件“stdio.h”中,因此在使用scanf函数时要加上#include 。

一般形式: scanf函数的一般形式为:scanf(“格式控制字符串”, 地址表列); 功能:将从键盘输入的字符转化为“格式控制字符串”所规定格式的数据,然后存入以地址表列的值为地址的变量中。 其中,格式控制字符串可以说明输入数据的类型。例如: %d表示十进制整数(int *)、%s表示字符串(char *),这将读取连续字符,直到遇到一个空格字符(空格字符可以是空白、换行和制表符)。 地址表列中给出各变量的地址。地址是由地址运算符“&”后跟变量名组成的。例如:&a、&b分别表示变量a和变量b的地址。scanf函数在本质上也是给变量赋值,但要求写变量的地址。

说明: scanf()函数接收输入数据时,遇以下情况结束一个数据的输入: ① 遇空格、“回车”、“跳格”键。 ② 遇宽度结束。 ③ 遇非法输入。

返回值: 如果成功,该函数返回成功匹配和赋值的个数。如果到达文件末尾或发生读错误,则返回 EOF。

C 库函数 - getchar():

功能: int getchar()从标准输入 stdin 获取一个字符(一个无符号字符)。这等同于 getc 带有 stdin 作为参数:getc(stdin)。getchar()非真正函数,而是getc(stdin)宏定义。 getchar()是在输入缓冲区顺序读入一个字符(包括空格、回车和Tab)。所以可以用getchar来清除scanf留在缓冲区中的回车。

当程序调用getchar时,程序就等着用户按键。用户输入的字符被存放在键盘缓冲区中。直到用户按回车为止(回车字符也放在缓冲区中)。当用户键入回车之后,getchar才开始从stdin流中每次读入一个字符,且将用户输入的字符回显到屏幕。如用户在按回车之前输入了不止一个字符,其他字符会保留在键盘缓存区中,等待后续getchar调用读取。也就是说,后续的getchar调用不会等待用户按键,而直接读取缓冲区中的字符,直到缓冲区中的字符读完后,才等待用户按键。

头文件: 使用getchar函数时要加上#include 。

返回值: 该函数以无符号 char 强制转换为 int 的形式返回读取的字符。 返回类型为int型,为用户输入的ASCII码或EOF。 如果到达文件末尾或发生读错误,则返回 EOF。

getch:

功能: 从stdio流中读取一个字符,不显示在命令行(不回显),很多人用来模拟“按任意键继续的效果”。 当用户按下某个字符时,函数自动读取,无需按回车。

原型: int getch(void)

头文件: #include

和getchar区别: getch与getchar基本功能相同,差别是getch直接从键盘获取键值,不等待用户按回车,只要用户按一个键,getch就立刻返回,getch返回值是用户输入的ASCⅡ码,出错返回-1。 输入的字符不会回显在屏幕上。 getch()是非缓冲输入函数,就是不能用getch()来接受缓冲区已存在的字符。

说明: getch函数常用于程序调试中,在调试时,在关键位置显示有关的结果以待查看,然后用getch函数暂停程序运行,当按任意键后程序继续运行。

返回值: getch返回值是用户输入的ASCⅡ码,出错返回-1。

getche:

功能: getche()读取从控制台输入的字符,并将输入的字符立即显示在控制台。 也就是说,输入d,直接就输出d,不需要按回车键,即该函数不带缓冲区,且输入有回显。

原型: int getche(void);

头文件: #include

说明: 和getch一样,这两个函数经常用于交互输入的过程中完成暂停等功能。

返回值: 从控制台读取字符,并在控制台显示读取的字符ASCII码值。

getchar(),getch(),getche()比较:

相同点: 1.都不需要参数 2.功能一致:从输入设备获取一个字符并返回这个字符

不同点:

1.getchar()先将输入的字符保存在缓冲区,然后再从缓冲区读取这个字符,是间接读取 2.getche()和getch()不需要将输入的字符保存在缓冲区,而是即输即取,也就是说,一输入一个字符,它立即直接读取

getchar() 会等待用户按下回车键才开始读取,而 getche()、getch() 会立即读取。这是因为 getchar() 带有缓冲区,用户输入的数据会暂时保存到缓冲区,直到按下回车键才开始读取;而 getche()、getch() 不带缓冲区,只能立即读取。

在这里插入图片描述

gets:

功能: char* gets(char* buffer) 从stdin流中读取字符串,直至接受到换行符或EOF时停止,并将读取的结果存放在buffer指针所指向的字符数组中。换行符不作为读取串的内容,读取的换行符被转换为null值,并由此来结束字符串。

参考链接:

https://zhuanlan.zhihu.com/p/343532127



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3