跳到主要内容

C++ fgets() 函数

fgets() 原型

char* fgets(char* str, int count, FILE* stream);

fgets() 函数从给定的文件流中最多读取 count-1 个字符,并将它们存储在由 str 指向的数组中。

解析将持续到文件结束或找到换行符 (\n) 为止。如果找到换行符,数组 str 也将包含该换行符。如果没有发生错误,str 的末尾将写入一个空字符。

它定义在 <cstdio> 头文件中。

fgets() 参数

  • str:指向存储文件内容的字符数组的指针。
  • count:要写入的最大字符数。
  • stream:要从中读取字符的文件流。

fgets() 返回值

  • 成功时,fgets() 函数返回 str;失败时返回空指针。
  • 如果因文件结束条件导致失败,它会设置 eof 指示器。在这种情况下,str 的内容不会改变。
  • 如果因其他错误导致失败,它会设置错误指示器。在这种情况下,str 的内容是不确定的。它们甚至可能没有以空字符结尾。

示例:fgets() 函数如何工作

#include <iostream>
#include <cstdio>

using namespace std;

int main()
{
int count = 10;
char str[10];
FILE *fp;

fp = fopen("file.txt", "w+");
fputs("一个示例文件\n", fp);
fputs("文件名是 file.txt\n", fp);

rewind(fp);

while(feof(fp) == 0)
{
fgets(str, count, fp);
cout << str << endl;
}

fclose(fp);
return 0;
}

当你运行程序时,一个可能的输出将是:

一个示例文


文件名是
file.txt