2012-04-26 3 views
0

좀 바이트 OFSET되는 파일에 문자를 얻을 수있는 C 프로그램을 작성하는 것을 시도하고있다, 나는 특정 바이트가 나타내는 문자를 인쇄 할 세 가지 C 프로그램을 사용하여 현재 위치에서 캐릭터를 얻는 방법은 무엇입니까?

fseek(fp,3,SEEK_CUR); 

다음과 같이 말할 수 있습니다. 예를 들어, 내 파일에 다음과 같은 내용이 포함되어 있으면 세 번째 문자를 모두 인쇄해야합니다.

//reading from file// 

문제는 while 루프를 사용 후 내가 원하는 결과를 인쇄 할 수 아니다는 것이다. 인쇄되는 첫 번째 문자는 세 번째 문자가 아닌 네 번째 문자입니다.

while(fp!=EOF) 
{ 
    fseek(fp,3,SEEK_CUR); 
    ch = fgetc (fp); 
    printf("%c",ch); 
} 

이 부분의 실수를 이해할 수 있습니까? 감사!

+0

'fp! = EOF'는 실수입니다. – cnicutar

+2

'fp! = EOF'는 컴파일러에 경고를 주어야합니다 (포인터와 int를 비교할 수는 없습니다). 컴파일러 경고에주의를 기울여 오류로 처리하십시오. – pmg

+0

@pmg 귀하의 조언에 감사드립니다. 나는 아직 배우기 단계에 있으며 앞으로 돌볼 것입니다. – Shash

답변

1

fgetc은 파일 오프셋을 1만큼 이동합니다. 다음을 시도하십시오.

fseek(fp,3,SEEK_CUR); 
while(fp!=EOF) 
{ 
    ch = fgetc (fp); // moves offset by 1 
    fseek(fp,2,SEEK_CUR); // moves offset by another 2 
    printf("%c",ch); 
} 
0

fgetc는 파일 포인터를 한 문자 씩 앞당겨줍니다. 따라서 루프 반복마다 파일 포인터를 총 4 문자 씩 앞당기 고 있습니다. 당신의 목적을 위해, 당신은 3을 2로 바꾸고 싶습니다. fseek(fp,2,SEEK_CUR);

관련 문제