我需要从文件中读取4000行,对它们进行一些操作,然后读取下一行4000行,对它们进行一些操作,然后读取下一行4000行直到某个BIG文件结束。如何正确执行此操作?从文件中逐行逐行读取C
这是我的基本代码这是刚刚读取的所有行,但是从文件中不逐块:
#include <stdio.h>
#include <string.h>
#define bufSize 1024
int main(int argc, char *argv[])
{
FILE* fp;
char buf[bufSize];
if (argc != 2)
{
fprintf(stderr, "Usage: %s <soure-file>\n", argv[0]);
return 1;
}
if ((fp = fopen(argv[1], "r")) == NULL)
{ /* Open source file. */
perror("fopen source-file");
return 1;
}
while (fgets(buf, sizeof(buf), fp) != NULL)
{
buf[strlen(buf) - 1] = '\0'; /* eat the newline fgets() stores */
printf("%s\n", buf);
}
fclose(fp);
return 0;
}
关于这一行:'buf [strlen(buf) - 1] ='\ 0';',这不是一个简单的方法,有两种方法可以失败:1)行长度大于1023字节2)文件的最后一行没有以换行符结束。建议:'char * newline = NULL; if(newline = strstr(buf,“\ n”)){* newline ='\ n'; }' – user3629249