다음 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);
어떻게 오프셋이 -2가 아닌 -1이됩니까?
미리 감사드립니다.
fgetc()가 1만큼 앞으로 이동했기 때문에 이전에 char로 돌아 가기 위해 2로 되돌려 야합니다. –
seek-1은 매번 동일한 문자를 표시하기 때문입니다. –
이것은 휴대용이 보장되지 않습니다 - 텍스트 파일을 임의로 "찾을"수는 없습니다 –