次のCプログラムでは、下位のテキストファイルを印刷しますテキストファイルを逆方向に印刷するプログラムでオフセットの代わりに-2のオフセットを使用してfseekを呼び出す必要があるのはなぜですか?
#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);
となるはずです。
ありがとうございます!
fgetc()は1を前に移動したので、前に2に戻ってcharに到達する必要があります。 –
シークすると、毎回同じ文字が表示されるためです。 –
これは移植可能であることが保証されていません - テキストファイルは任意に "探し求める"ことはできません –