可以使用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的值可能被改变。
网上找了一个使用fscanf函数实现的读一行的代码,本人试过可用,遇到空格不会切断。
#include
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的内容如下(三行,每一行中有空格,还有一行回车行):
程序执行结果:
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);