如何使用C选择文本文件的最后一行

lac*_*991 2 c file-io

我试图找到一种方法来选择文本文件的最后一行使用C(不是c ++或c#,只是C),我很难找到一种方法来做到这一点,如果有人可以帮助我解决这个问题我将非常感激,谢谢!(顺便说一下,我想要做的一个很好的例子,这将类似于尾巴-n 1将在bash中做什么)

Oki*_*ata 6

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void main(int argc, char *argv[])
{
    FILE *fd; // File pointer
    char filename[] = "./Makefile"; // file to read
    char buff[1024];

    if ((fd = fopen(filename, "r")) != NULL) // open file
    {
        fseek(fd, 0, SEEK_SET); // make sure start from 0

        while(!feof(fd))
        {
            memset(buff, 0x00, 1024); // clean buffer
            fscanf(fd, "%[^\n]\n", buff); // read file *prefer using fscanf
        }
        printf("Last Line :: %s\n", buff);
    }
}
Run Code Online (Sandbox Code Playgroud)

我正在使用Linux.CMIIW


MBy*_*ByD 5

没有直接的方法,但我首选的方法是:

  1. 转到文件末尾
  2. 读取最后X个字节
  3. 如果它们包含'\n' - 你得到了你的行 - 从该偏移读取到文件的末尾
  4. 在它们之前读取X字节
  5. 回到3,直到找到匹配
  6. 如果到达文件的开头 - 整个文件是最后一行