C语言怎样读取文本的每一行

文本内容如下:
1
2
58
369
5
569
54896
2365
25
4
请问高手,用C语言怎样通过循环一行一行地读取出数据呢?(也就是一次读取一行,接着又循环读取下一行)
最新回答
苍老了谁的最初

2024-05-03 03:10:59

可以使用fgets函数来实现。

1 函数名:
fgets
2 声明形式:
char *fgets(char *buf, int bufsize, FILE *stream);
3 头文件:
stdio.h

4 功能及参数说明:
从stream中读取一行数据存到buf中。如果数据长度小于bufsize,那么读入整行数据,并将
换行符
转换为
字符串
结束符\0。 如果数据长度超过bufsize,那么只读入bufsize大小的数据,并在结尾添加\0。
5 返回值:
成功,则返回第一个参数buf;
在读字符时遇到end-of-file,则eof指示器被设置,如果还没读入任何字符就遇到这种情况,则buf保持原来的内容,返回NULL;
如果发生读入错误,error指示器被设置,返回NULL,buf的值可能被改变。
劣性失格

2024-05-03 03:25:08

网上找了一个使用fscanf函数实现的读一行的代码,本人试过可用,遇到空格不会切断。

#include <stdio.h>

int main(int argc,char* argv[])
{
FILE* fin;
char line[100];
fin = fopen("test.txt","r");
while(fscanf(fin,"%[^\n]%*c\n",line)!=EOF){
printf("%s\n",line);
}

fclose(fin);
return 1;
}

test.txt的内容如下(三行,每一行中有空格,还有一行回车行):

程序执行结果:

眠于你心上

2024-05-03 04:06:50

FILE *fin;
char *one_line;
one_line = (char*)malloc( MAX_LINE_SIZE * sizeof(char) );
if((fin = fopen(argv[1], "r"))==NULL)
{
printf("can not open file %s !\n", argv[1]);
exit(-1);
}

while( fgets(one_line, MAX_LINE_SIZE, fin) != NULL )
{
printf("读一行打印一行%s",one_line);

}

fclose(fin);