怎么用fgets()一行一行读取文件
发布网友
发布时间:2023-11-07 20:55
我来回答
共2个回答
热心网友
时间:2023-12-02 10:03
缓冲区数组要足够大,装得下一行的内容.示例如下:
#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 );
}
}
热心网友
时间:2023-12-02 10:04
1)如果要保存多行,必须要分配足够的内存,建议temp改成100*256这么大,假设每行最长256字节,最多100行。
2)30字节对一行来说都太小了,更不用说对多行,很容易缓冲区溢出。你的buf至少也要搞到256字节一行,虽然以前说是80字节,但是你看看很多文件现在一行都远远超过了。追问我说的是读取第一行,保存到一个数组,然后清空数组,然后再读取第二行,一直到文件结束