我需要從文件中讀取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