C 语言的三个输入函数:scanf、getchar 和 fgets389


C 语言提供了三个输入函数:scanf、getchar 和 fgets,用于从标准输入获取用户输入。这些函数有不同的功能和使用场景,本文将详细介绍它们的用法和区别。

scanf

scanf 是一个格式化输入函数,用于从标准输入读取数据并将其存储在指定的变量中。其语法为:```c
int scanf(const char *format, ...);
```

其中,format 是一个字符串,指定输入数据的格式,它包含转换说明符,用于指定要读取的数据类型。转换说明符后面跟着要存储数据的变量。例如,以下代码使用 scanf 读取一个整数和一个浮点数:```c
int number;
float value;
scanf("%d %f", &number, &value);
```

getchar

getchar 是一个无格式输入函数,用于从标准输入读取单个字符并返回其 ASCII 值。其语法为:```c
int getchar(void);
```

getchar 从标准输入读取一个字符,直到遇到换行符或文件结束符。它不会将空格或制表符作为输入的一部分,因此适合读取单字符输入或命令行参数。例如,以下代码使用 getchar 读取一个字符并将其打印到屏幕上:```c
char c;
c = getchar();
putchar(c);
```

fgets

fgets 是一个格式化输入函数,用于从标准输入读取一行数据并将其存储在指定的字符数组中。其语法为:```c
char *fgets(char *str, int size, FILE *stream);
```

其中,str 是要存储输入数据的字符数组,size 是数组的大小(包括空字符),stream 是要读取的文件流。默认情况下,stream 是标准输入流 stdin。fgets 从标准输入读取一行数据(直到遇到换行符或文件结束符)并将其存储在指定的字符数组中。它会自动在字符串末尾添加一个空字符。例如,以下代码使用 fgets 读取一行文本并将其打印到屏幕上:```c
char buffer[100];
fgets(buffer, 100, stdin);
printf("%s", buffer);
```

函数比较| 特性 | scanf | getchar | fgets |
|---|---|---|---|
| 格式化 | 是 | 否 | 是 |
| 输入类型 | 单个变量 | 单个字符 | 字符数组(一行) |
| 空白处理 | 跳过 | 跳过 | 包含在输入中 |
| 换行符处理 | 自动读取 | 手动读取 | 自动读取 |
| 返回值 | 读入成功的变量数量 | 读入的字符 | 输入行 |

scanf、getchar 和 fgets 是 C 语言中常用的输入函数,它们提供了不同的功能和使用场景。scanf 适合读取格式化的数据,getchar 适合读取单个字符,而 fgets 适合读取一行文本。根据具体需求,选择合适的输入函数可以提高代码的效率和可读性。

2025-02-11


上一篇:字符串在 C 语言中的操作利器:函数指南

下一篇:C 语言的缺省输出:stdout 和 stderr