是否可以从下往上遍历文件?[C]

Lil*_*nks 1 c traversal file

如何从下往上逐行遍历文件?例如,这是我从上到下遍历它的代码:

void *readFileTB(char *str1)
{
    int size = 1024;
    char *buffer = malloc(size);
    FILE *fp;
    fp = fopen("testfile.txt", "r");
    while(fgets(buffer, 1024, fp)) //get a line from a file
    {
            printf(buffer);
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

如果文件包含:

line1onetest
line2twotest
line3threetest
Run Code Online (Sandbox Code Playgroud)

如果执行此功能将打印以下内容:

line1onetest
line2twotest
line3threetest
Run Code Online (Sandbox Code Playgroud)

我怎样才能编写一个能够完成上述操作但功能相反的函数,以便输出以下内容?

line3threetest
line2twotest
line1onetest
Run Code Online (Sandbox Code Playgroud)

有什么想法吗?

ick*_*fay 5

一行一行有点困难.如果我们从字节开始,那很简单:我们首先fseek在底部之前:

if(fseek(fp, 256, SEEK_END) == -1) { /* handle error */ }
Run Code Online (Sandbox Code Playgroud)

由于我们在结束前寻找了256个字节,因此我们可以读取256个字节.然后我们可以寻找256个字节等,直到我们到达文件的顶部.

现在,如果您正在尝试读取文本行,这可能很棘手:您需要在文件末尾读取一些字节并找到最后一个换行符.如果没有,你没有阅读,你需要阅读更多.一旦你找到它,你的线就从那里开始.要阅读下一行,您需要再次向后搜索,不要超过上一行开头.