用 C 语言逆向读取文件的最佳方式是什么?我知道一开始您可能会认为这没有任何用处,但是大多数日志等都会在文件末尾附加最新数据。我想从文件中向后读入文本,将其缓冲成行 - 即
美国广播公司
定义
应按行阅读 ghi、def、abc。
到目前为止我已经尝试过:
#include <stdio.h>
#include <stdlib.h>
void read_file(FILE *fileptr)
{
char currentchar = '\0';
int size = 0;
while( currentchar != '\n' )
{
currentchar = fgetc(fileptr); printf("%c\n", currentchar);
fseek(fileptr, -2, SEEK_CUR);
if( currentchar == '\n') { fseek(fileptr, -2, SEEK_CUR); break; }
else size++;
}
char buffer[size]; fread(buffer, 1, size, fileptr);
printf("Length: %d chars\n", size);
printf("Buffer: %s\n", buffer);
}
int main(int argc, char *argv[])
{
if( argc < 2) { printf("Usage: backwards [filename]\n"); return 1; }
FILE *fileptr = fopen(argv[1], "rb");
if( fileptr == NULL ) { perror("Error:"); return 1; }
fseek(fileptr, -1, SEEK_END); /* Seek to END of the file just before EOF */
read_file(fileptr);
return 0;
}
试图简单地读取一行并缓冲它。对不起,我的代码很糟糕,我变得非常困惑。我知道你通常会为整个文件分配内存然后读入数据,但对于不断变化的大文件我认为直接读取会更好(特别是如果我想在文件中搜索文本)。
提前致谢
* 抱歉忘了说这将在 Linux 上使用,所以换行符只是 NL 而没有 CR。 *
最佳答案
您可以通过程序 tac
将输入通过管道传输,这类似于 cat
但倒退!
关于c - 在C中向后读取文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14834267/