gpt4 book ai didi

c - 为什么在向后打印文本文件的程序中调用 fseek 时应使用偏移量 -2 而不是偏移量 -1?

转载 作者:行者123 更新时间:2023-11-30 14:59:49 25 4
gpt4 key购买 nike

以下 C 程序向后打印文本文件:

#include <stdio.h>
#define SEEK_SET 0
#define SEEK_CUR 1
#define SEEK_END 2
int main(int argc, char **argv)
{
FILE *fp = f
open(argv[1], "r");
fseek(fp, -1L, SEEK_END);
while (ftell(fp))
{
putchar(fgetc(fp));
fseek(fp, -2L, SEEK_CUR);
}

putchar(fgetc(fp));

由于程序应该向后打印文本文件,因此应该从末尾读取每个字符,而不跳过任何字符。如果是这样,我认为 while 循环内的调用应该是

fseek(fp, -1L, SEEK_CUR);

为什么偏移量是-2而不是-1?

提前致谢!

最佳答案

当您调用 fgetc 时,偏移量会比您期望的提前 1 个字符,因此您需要向后移动 2 个字符才能获得您期望获得的字符。否则你会一直得到相同的字符。

关于c - 为什么在向后打印文本文件的程序中调用 fseek 时应使用偏移量 -2 而不是偏移量 -1?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42515691/

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