就像在主題中一樣,我嘗試逐行讀取文件,但程序沒有按照我想要的那樣做。所以我試着檢查一下,如果最後有一個\ n,並且如果不是這個行的空間不夠用,所以我重新分配它,並把行的位置放到舊的長度中什麼將被讀取順序來連接下一個:在C語言中逐行讀取文件,concat在realloc後不起作用
int max_line_len = 10000;
int line_pos = 0;
char *line;
line = malloc(sizeof(char)*max_line_len);
while (fgets(&line[line_pos], max_line_len, file) != NULL) {
int line_length = strlen(line);
if (line[line_length - 1] == '\n') {
// do something to the lines
line_pos = 0;
} else {
max_line_len *= 2;
line_pos = line_length;
line = realloc(sizeof(char) * max_line_len);
}
}
}
fclose(file);
free(line);
但realloc的後一整行甚至不讀,他不斷進入(其他部分
這是你的完整碼嗎? – 2014-10-07 07:17:58
這不是真正的代碼。這個'realloc'調用甚至不應該編譯。 – user694733 2014-10-07 07:20:26
沒有它的不是,但唯一我認爲這將是重要的,因爲錯誤發生在realloc部分 – malajedala 2014-10-07 07:20:37