C 语言 fgets 函数详解252


简介

fgets 函数是 C 标准库中的一个函数,用于从文件中读取一行数据。它允许用户指定要读取的行的最大长度,并返回一个包含该行的字符串。

语法

fgets 函数的语法如下:```C
char *fgets(char *str, int num, FILE *stream);
```
* `str`:要写入读取行的字符数组的首地址。
* `num`:要读取的最大字符数(包括空字符)。
* `stream`:指向要读取的文件的 FILE 结构指针。

返回值

成功读取一行数据时,fgets 函数返回指向 `str` 字符数组的首地址。如果文件已达到末尾或发生错误,则返回 NULL。

参数* char *str:要写入读取行的字符数组的首地址。该字符数组必须能够容纳至少 `num` 个字符(包括空字符)。
* int num:要读取的最大字符数(包括空字符)。该值必须大于 0。如果 `num` 为 0,fgets 函数将返回 NULL。
* FILE *stream:指向要读取的文件的 FILE 结构指针。文件必须已打开为读取模式。

用法

fgets 函数用于从文件中读取一行数据。它会继续读取字符,直到遇到换行符('')或文件末尾。换行符将包括在返回的字符串中。如果 `num` 参数比实际行短,fgets 函数将截断该行并返回一个不完整的行。

以下代码示例演示了如何使用 fgets 函数从文件中读取一行数据:```C
#include
int main() {
FILE *fp;
char str[100];
fp = fopen("", "r");
if (fp == NULL) {
perror("Error opening file");
return 1;
}
if (fgets(str, 100, fp) != NULL) {
printf("Read line: %s", str);
} else {
printf("Error reading line");
}
fclose(fp);
return 0;
}
```

注意事项* fgets 函数不会自动添加空字符('\0')到返回的字符串。因此,使用返回的字符串时,应确保它已正确终止。
* 如果 `num` 参数小于要读取的行的长度,fgets 函数将截断该行并返回一个不完整的行。
* 如果文件已达到末尾或发生错误,fgets 函数将返回 NULL。
* fgets 函数不会处理二进制文件。它仅适用于文本文件。

替代方案

可以使用其他函数从文件中读取一行数据,例如:* getline():getline 函数是 GNU C 扩展,它用于从文件中读取一行数据,并处理二进制文件。
* read():read 函数可用于读取文件中的任何数量的数据,包括一行数据。它比 fgets 函数更灵活,但使用起来也更复杂。

2024-12-03


上一篇:C 语言字符串输出函数:全面指南

下一篇:哈希函数在 C 语言中的实现