如何使用lseek读取文件的最后一个字符

Jef*_*eff 3 c++ unix system-calls

我正在尝试使用lseek以相反的顺序从文件中读取字符.

到目前为止,我有:

 int finished = 1;
 char temp[1];

    while (finished > 0) {

 lseek(fileID,0,2);

 finished = read(fileID, &temp, 1);

 cout << temp[0];

    }
Run Code Online (Sandbox Code Playgroud)

但是read总是返回0.

关于该怎么做的任何想法?

Mic*_*l J 7

当然,对lseek()的调用应该是

lseek(fileID, -1, SEEK_END);
Run Code Online (Sandbox Code Playgroud)

您正在寻找文件的末尾,您需要缩短一个字节.

  • 注意零大小的文件,即检查`lseek`的返回值以确保它没有失败. (3认同)