在C语言中,常用的读取字符(串)的函数包括getchar
、fgetc
、scanf
和sscanf
等。
-
getchar
函数:- 函数原型:
int getchar(void);
- 作用:从标准输入流中读取一个字符。
- 特点:只能读取一个字符,常用于逐字符处理输入。
-
#include <stdio.h> int main() { printf("请输入一个字符串:\n"); int c; while ((c = getchar()) != '\n' && c != EOF) { putchar(c); // 将读取的字符输出到标准输出流 } return 0; }
- 函数原型:
-
fgetc
函数:- 函数原型:
int fgetc(FILE *stream);
- 作用:从指定的文件流中读取一个字符。
- 特点:与
getchar
类似,但可以指定读取的文件流。 -
#include <stdio.h> int main() { FILE *file; char filename[] = "example.txt"; file = fopen(filename, "r"); // 以只读方式打开文件 if (file == NULL) { printf("无法打开文件 %s\n", filename); return 1; } int c; while ((c = fgetc(file)) != EOF) { putchar(c); // 将读取的字符输出到标准输出流 } fclose(file); // 关闭文件 return 0; }
- 函数原型:
-
scanf
函数:- 函数原型:
int scanf(const char *format, ...);
- 作用:从标准输入流中按照指定的格式读取数据,可以用于读取字符。
- 注意:对于字符,
scanf
会在遇到空格、制表符或换行符时停止读取。 -
#include <stdio.h> int main() { int num; char str[100]; printf("请输入一个整数和一个字符串:\n"); scanf("%d %s", &num, str); printf("您输入的整数是: %d\n", num); printf("您输入的字符串是: %s\n", str); return 0; }
- 函数原型:
-
sscanf
函数:- 函数原型:
int sscanf(const char *str, const char *format, ...);
- 作用:从指定的字符串中按照指定的格式读取数据,可以用于从字符串中提取特定格式的数据。
- 特点:可以用于对字符串进行格式化读取,常用于解析字符串中的数据。
-
#include <stdio.h> int main() { char str[] = "2022 Happy New Year"; int year; char message[50]; sscanf(str, "%d %s", &year, message); printf("从字符串中解析得到的年份是: %d\n", year); printf("从字符串中解析得到的消息是: %s\n", message); return 0; }
- 函数原型:
异同点:
getchar
和fgetc
都是用于读取单个字符,而scanf
和sscanf
则可以按照指定格式读取数据,包括字符和其他数据类型。getchar
和fgetc
主要用于逐字符处理输入,适合处理字符流;而scanf
和sscanf
更适合按照格式读取数据,适用于不同的输入场景。scanf
和sscanf
可以处理多种数据类型,更灵活,适用于复杂的输入数据解析。