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;
}
输出:
中文乱码问题
需要将文件编码格式改为ANSI
编码格式。