0%

C语言笔记——fgets()和fputs()函数

fgets()fputs()函数每次能读和写一个字符串,相较于每次只能读、写一个字符的fgetc()fputs()函数来说,效率更高。

fgets()函数

fgets()函数用来从目标文件中读取一个字符串,并保存到字符数组中,其调用方法为

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

str表示字符数组,n为需要读取的字符数目,fp为文件指针。

读取到的字符串会在末尾自动添加\0,n个字符也包括\0,实际上只读取n-1个字符。

读取成功时,fgets()函数返回字符数组首地址;读取失败或文件内部指针指向文件末尾时,fgets()函数返回NULL

在读取到n-1个字符之前,如果出现换行或文件末尾,则读取结束;不管n的值多大,fgets()函数一次只能读取一行数据。

如果把fgets()函数嵌入循环语句,则可无视n的大小٩(๑´3`๑)۶,从文件开头读取到文件末尾(当然,这个过程中fgets()函数被执行了多次(っ●ω●)っ)。

#include<stdio.h>
int main(void)
{
FILE *fp;
if((fp=fopen("G:\\来自 Dev-C++\\练习.txt","rt"))==NULL)
{
printf("文件无法打开!");
}
else
{
int n=10;
char str[n];
while((fgets(str,n,fp))!=NULL)
{
printf("%s",str);
}
printf("\n");
if(feof(fp)!=0)
{
printf("文件读取成功!");
}
else
{
if(ferror(fp)!=0)
{
printf("文件读取出现错误!");
}
}
fclose(fp);
}
return 0;
}

fputs()函数

fputs()函数用来向目标文件写入一个字符串,其调用方法为

int fputs(char *str,FILE *fp);

str表示需要写入的字符串,fp为文件指针。

写入成功时,fputs()函数返回非负数;写入失败时,fputs()函数返回EOF

#include<stdio.h>
int main(void)
{
FILE *fp;
if((fp=fopen("G:\\来自 Dev-C++\\练习.txt","at+"))==NULL)
{
printf("文件无法打开!");
}
else
{
printf("输入字符串:");
char str[10];
scanf("%s",&str);
int ch;
ch=fputs(str,fp); //向目标文件写入字符串并把返回值赋值给变量ch
if(ch!=EOF)
{
printf("写入成功!");
}
else
{
printf("写入失败!");
}
fclose(fp);
}
return 0;
}

如有错误,请在评论区多多指教,感激不尽ヽ( ^ω^ ゞ )。

本文内容整理自

C语言fgets和fputs函数的用法详解(以字符串的形式读写文件)

C语言文件操作之fgets()