使用fseek()读取文件的最后50个字符

Pie*_*ter 0 c file fseek

我试图通过这样做来读取文件中的最后50个字符:

FILE* fptIn;
char sLine[51];
if ((fptIn = fopen("input.txt", "rb")) == NULL) {
    printf("Coudln't access input.txt.\n");
    exit(0);
}
if (fseek(fptIn, 50, SEEK_END) != 0) {
    perror("Failed");
    fclose(fptIn);
    exit(0);
}
fgets(sLine, 50, fptIn);
printf("%s", sLine);
Run Code Online (Sandbox Code Playgroud)

这不会返回任何有意义的东西.为什么?

Meh*_*ari 11

将50更改为-50.另请注意,这仅适用于ASCII等固定长度的字符编码.从最后找到第50个字符对于像UTF-8这样的东西来说远非微不足道.