C语言文件函数

C语言 fgets() 函数 读取文件到字符串,遇到换行符就结束读取,所以它只能读取文件单行内容,读取完成后将文件指针移动到读取字符串。

该函数不能单独使用,因为读取文件需要先打开文件 fopen() 函数,读取完成之后还需要关闭文件fclose() 函数。

如果要读取文件多行内容,请使用fread()函数。

语法

char *fgets(char *str, int n, FILE *fp);

参数

  • str:字符数组指针,存储读取的字符串。
  • n:读取的最大字符数,通常是字符数组的大小。
  • fp:文件指针。

返回值

读取成功返回字符串str,如果达到文件末尾或者读取失败返回NULL

注意

从返回值可以知道到达文件末尾或者出错都会返回NULL,所以不能使用NULL指针判断文件是否到达文件末尾。

可以使用feof() 和 ferror() 函数帮助我们判断是否到达文件末尾。

例子

现介绍一个简单的例子,了解C语言 fgets() 函数 的使用方法。

先准备一个文件yxjc123.txt 内容如下:

C语言文件函数fgets()
yxjc123.com 介绍C语言文件函数的使用。
这是该文件的第3行内容。
这是该文件的第4行内容。

这里结合 fopen(),fclose()、ferror()函数介绍该函数的使用:

 #include <stdio.h>
#include<math.h>

int main( )
{

	FILE *file; //定义文件指针
	char str[40];
	file = fopen("d:/yxjc123.txt", "r");//打开文件
	if(NULL == file) {
		perror("打开文件失败");
		return -1;
	} 
	//判断是否达到文件末尾指针
	while (fgets (str, 40, file)!=NULL) {  
		printf("%s", str);

	}
	
	puts("\n");
	//通过ferror判断是否读取出错
	if(ferror(file)){
	    puts("读取文件出错");
	}else{
	    puts("读取文件成功");
	}

        fclose(file); //关闭文件

	getchar();
	return 0;
 
}

输出:

C语言fgets()函数:读取一行

中文乱码问题

需要将文件编码格式改为ANSI编码格式。