gpt4 book ai didi

c - 在C中向后读取文本文件

转载 作者:太空狗 更新时间:2023-10-29 16:37:53 26 4
gpt4 key购买 nike

用 C 语言逆向读取文件的最佳方式是什么?我知道一开始您可能会认为这没有任何用处,但是大多数日志等都会在文件末尾附加最新数据。我想从文件中向后读入文本,将其缓冲成行 - 即

美国广播公司
定义

应按行阅读 ghidefabc

到目前为止我已经尝试过:

    #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 但倒退!

http://linux.die.net/man/1/tac

关于c - 在C中向后读取文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14834267/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com