怎么用fgets()一行一行读取文件

我想用fgets()读取文件内容,从第一行读,读完又开始读第二行,一直读到最后一行,,请问怎么做才可以... 我想用fgets()读取文件内容,从第一行读,读完又开始读第二行,一直读到最后一行,,请问怎么做才可以 展开
 我来答
joychen_
推荐于2016-02-04 · TA获得超过1747个赞
知道大有可为答主
回答量:1617
采纳率:100%
帮助的人:1830万
展开全部

缓冲区数组要足够大,装得下一行的内容.示例如下:

#include <stdio.h>

int main( void )
{
   FILE *stream;
   char line[100];
   if( fopen_s( &stream, "crt_fgets.txt", "r" ) == 0 )
   {
      if( fgets( line, 100, stream ) == NULL)
         printf( "fgets error\n" );
      else
         printf( "%s", line);
      fclose( stream );
   }
}
追问
你这样是不是把txt文件中读取第一行,到line数组中,可是fgets会读取第二行到文件中吗
追答

加个循环即可.

#include <stdio.h>
 
int main( void )
{
   FILE *stream;
   char line[100];
   if( fopen_s( &stream, "crt_fgets.txt", "r" ) == 0 )
   {
      while( fgets( line, 100, stream ) )
         printf( "%s", line);
      fclose( stream );
   }
}
侵略地球4键
推荐于2016-01-24 · 超过65用户采纳过TA的回答
知道答主
回答量:201
采纳率:0%
帮助的人:63.1万
展开全部
1)如果要保存多行,必须要分配足够的内存,建议temp改成100*256这么大,假设每行最长256字节,最多100行。
2)30字节对一行来说都太小了,更不用说对多行,很容易缓冲区溢出。你的buf至少也要搞到256字节一行,虽然以前说是80字节,但是你看看很多文件现在一行都远远超过了。
追问
我说的是读取第一行,保存到一个数组,然后清空数组,然后再读取第二行,一直到文件结束
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式