在c中反向读取文本文件

时间:2012-01-13 11:13:03

标签: c linux file-io

我如何阅读例如从最后一行开始的文本文件中的10个最后一行?你对c有什么想法吗?

1 个答案:

答案 0 :(得分: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;