c语言txt按行读取字符串,C语言fgets()函数:从文件流中读取一行或指定个数的字符...

头文件:include

fgets()函数用于从文件流中读取一行或指定个数的字符,其原型为:

char * fgets(char * string, int size, FILE * stream);

参数说明:

string为一个字符数组,用来保存读取到的字符。

size为要读取的字符的个数。如果该行字符数大于size-1,则读到 size-1 个字符时结束,并在最后补充' \0';如果该行字符数小于等于 size-1,则读取所有字符,并在最后补充 '\0'。即,每次最多读取 size-1 个字符。

stream为文件流指针。

【返回值】读取成功,返回读取到的字符串,即string;失败或读到文件结尾返回NULL。因此我们不能直接通过fgets()的返回值来判断函数是否是出错而终止的,应该借助feof()函数或者ferror()函数来判断。

注意:fgets()与gets()不一样,不仅仅是因为gets()函数只有一个参数 FILE *stream,更重要的是,fgets()可以指定最大读取的字符串的个数,杜绝了gets()使用不当造成缓存溢出的问题。

【实例】从myfile.txt文件中读取最多99个字符。

#include

int main()

{

FILE * pFile;

char mystring [100];

pFile = fopen ("myfile.txt" , "r");

if (pFile == NULL)

perror ("Error opening file");

else {

if ( fgets (mystring , 100 , pFile) != NULL )

puts (mystring);

fclose (pFile);

}

return 0;

}

又如,使用fputs()写一个文件,然后fgets()读取文件内容并显示。

#include

#include

#include

#include

int main(void)

{

char msg[] = "This is a test!\n secend line\n";

char msgget[100];

int i = 0;

FILE* fstream;

fstream = fopen("test.txt","w+"); /*打开文件*/

if(fstream==NULL)

{

printf("Open file failed!\n");

exit(1);

}

fputs(msg, fstream); /*写入文件*/

fflush(fstream);

close(fileno(fstream));

fstream=fopen("test.txt","r");

i = 0;

fgets(msgget,3,fstream) ;

fputs(msgget, stdout);

printf("\n");

fgets(msgget,100,fstream) ;/*从流中读取一行或者指定个数字符*/

fputs(msgget, stdout); /*送一个字符串到流中*/

return 0;

}

运行结果:

Th

is is a test!

程序首先创建一个空文件,并利用fputs()函数写 入两行字符串,刷新关闭。然后重新以只读的方式打开该文件, 使用fgets()函数连续两次读取该文件,第一次读取3-1个字符,第 二次读取一行。最终结果都显示出来。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值