C语言字符串方式读文件教程
在
使用 fgets 函数读取文件时,读取到 n -1 个字符之前如果出现了换行,或者读到了文件末尾,则读取结束。这就意味着,不管 n 的值多大,fgets() 最多只能读取一行数据,不能跨行。
C语言fgets函数详解
语法
char *fgets(char *str, int n, FILE *fp);
参数
参数
描述
str
保存读取的内容的字符数组。
n
要读取的字符数目。
fp
文件指针。
返回值
读取成功时返回
头文件
fgetc 函数在 stdio.h 的头文件里面。
技术细节
读取到的字符串会在末尾自动添加 ‘\0’,n 个字符也包括 ‘\0’。也就是说,实际只读取到了 n-1 个字符,如果希望读取 100 个字符,n 的值应该为 101。
读取到 n -1 个字符之前如果出现了换行,或者读到了文件末尾,则读取结束。这就意味着,不管 n 的值多大,fgets() 最多只能读取一行数据,不能跨行。
在 C 语言中,没有按行读取文件的函数,我们可以借助 fgets(),将 n 的值设置地足够大,每次就可以读取到一行数据。
案例
字符串方式读文件
使用 fopen 函数打开文件,使用 fgets 函数以字符串方式读文件
#include
#include
int main(){
printf("嗨客网(www.haicoder.net)\n\n");
FILE *fp = NULL;
char str[100];
if ( (fp = fopen("c:\\1.txt", "r")) == NULL )
{
puts("Open file failed\n");
return;
}
else
{
puts("Open file success\n");
}
if (fgets(str, 100, fp) == NULL)
{
puts("Read file error\n");
}
else
{
printf("Read file success, str = %s\n", str);
}
printf("\n");
int ret = fclose(fp);
if (ret == 0)
{
puts("Close file success\n");
}
else
{
puts("Close file failed\n");
}
return 0;
}
程序运行后,控制台输出如下:
我们首先,使用了
按行读取整个文件
使用 fgets 函数按行的方式读取整个文件
#include
#include
int main(){
printf("嗨客网(www.haicoder.net)\n\n");
FILE *fp = NULL;
char str[100];
if ( (fp = fopen("c:\\1.txt", "r")) == NULL )
{
puts("Open file failed\n");
return;
}
else
{
puts("Open file success\n");
}
while (fgets(str, 100, fp) != NULL)
{
printf("Read line = %s", str);
}
printf("\n");
int ret = fclose(fp);
if (ret == 0)
{
puts("Close file success\n");
}
else
{
puts("Close file failed\n");
}
return 0;
}
程序运行后,控制台输出如下:
我们在打开文件之后,使用了
C语言字符串方式读文件总结
使用 fgets 函数读取文件时,读取到 n -1 个字符之前如果出现了换行,或者读到了文件末尾,则读取结束。这就意味着,不管 n 的值多大,fgets() 最多只能读取一行数据,不能跨行。