2012-01-13 60 views
0

如何從最後一行開始的文本文件中讀取10個最後一行?你對c有一些想法嗎?反向讀取文本文件中的c

+0

使用循環隊列。 – 2012-01-13 11:16:11

+0

我會看看每個字符,直到你到達文件的末尾。跟蹤你通過的cr/lf的數量,然後從底部向後讀取直線,直到你的cr/lf數量比總數小10 ... – Ted 2012-01-13 11:24:01

+0

@Cody Gray:我不知道我該怎麼做。我知道一個簡單的方法,讀取所有文件行,然後顯示數組中的最後10行? – 2012-01-13 11:25:22

回答

2

您必須從緩衝區中的文件中讀取最後n個字節,而不是在該緩衝區上運行。例如,要從文件中讀取最後一個BUFFER_SIZE字節,可以使用stdio執行類似下面的操作:

#define BUFFER_SIZE = 4096; 

char buffer[BUFFER_SIZE]; 
FILE* file = fopen("filename", "rb"); 
size_t bytesRead = -1; 

if(file) { 
    fseek(file, BUFFER_SIZE, SEEK_END); 
    bytesRead = fread(buffer, sizeof(char), BUFFER_SIZE, file); 

    /* Process the buffer here */ 
} 

fclose(file); 
file = NULL;