下面的C程序打印的文本文件向後:爲什麼在程序中向後打印文本文件時,fseek的偏移量是-2,而不是偏移量-1?
#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才能到達之前的char。 –
因爲尋找-1會每次向你顯示相同的字符。 –
這不保證是便攜式 - 文本文件不能被任意「尋找」 –