C语言提供了多种输入函数,不同的函数适用于不同的输入场景,开发者可以根据实际需求选择使用。下面将逐一介绍常用的C语言输入函数,说明其用法、特点和使用注意事项。

1. scanf函数
scanf是最常用的格式化输入函数,定义在<stdio.h>头文件中,能够根据指定的格式说明符读取标准输入(通常是键盘)的数据,并存储到对应的变量中。
函数原型为:
int scanf(const char *format, ...);
其中format是格式控制字符串,后面的省略号是可变参数列表,对应要存储输入数据的变量地址。常用的格式说明符包括%d(整数)、%f(浮点数)、%c(字符)、%s(字符串)等。
使用示例:
#include <stdio.h>
int main() {
int num;
float score;
char name[20];
// 读取整数、浮点数和字符串
scanf("%d %f %s", &num, &score, name);
printf("num=%d, score=%.2f, name=%sn", num, score, name);
return 0;
}
注意事项:
- 读取字符串时,
%s会读取到空白字符(空格、换行、制表符)为止,不会读取空白字符之后的内容,且不会检查目标数组的容量,容易出现缓冲区溢出问题。 - 读取字符时,
%c会读取任意字符,包括换行符、空格等空白字符,需要注意输入缓冲区中残留的字符影响。
2. getchar函数
getchar函数用于读取单个字符,定义在<stdio.h>头文件中,每次调用会从标准输入读取一个字符,并返回该字符的ASCII码值,如果遇到文件结束或者错误,返回EOF。
函数原型为:
int getchar(void);
使用示例:
#include <stdio.h>
int main() {
char ch;
printf("请输入一个字符:");
ch = getchar();
printf("你输入的字符是:%cn", ch);
return 0;
}
特点:getchar读取字符后,会将换行符等留在输入缓冲区中,如果后续还有输入操作,需要注意处理缓冲区残留的字符。该函数适合需要逐个处理字符的场景,比如读取密码、处理字符流等。
3. fgets函数
fgets函数用于读取字符串,相比scanf的%s,它能够指定读取的最大长度,避免缓冲区溢出,更加安全。fgets可以读取文件流或者标准输入的字符串,读取到换行符或者达到指定长度时停止。
函数原型为:
char *fgets(char *str, int n, FILE *stream);
其中str是存储读取内容的字符数组,n是最多读取的字符数(包括最后的空字符