0
我正在使用getline讀取文件。它除了一個奇怪的行爲,我不明白爲什麼完美的作品。考慮下面的一段代碼。現在test.txt是一個包含單個條目的文件,說1。我使用下面的代碼,我得到所需的結果,即getline讀取條目1.現在我添加另一個條目說2現在文件test.txt包含條目1和2 ,getline按預期讀取這兩個條目。但是現在,當我從test.txt中刪除第二個條目2並再次運行代碼時,getline會讀取額外的一行。我不知道爲什麼。現在,如果我刪除舊文件test.txt並創建一個新文件test.txt只有一個條目1,下面的代碼完美工作。getline在刪除第二個條目後讀取單個條目的文件怪異行爲
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
FILE *fp;
char *line = malloc(100*sizeof(char));
size_t len = 100;
ssize_t read;
fp = fopen("test.txt", "r");
while ((read = getline(&line, &len, fp)) != -1) {
printf("Retrieved line of length %zu :\n", read);
printf("%s", line);
}
return 0;
}
因爲還有一個換行符... –
如何避免再次創建新文件 –
使用退格鍵刪除它? –