[질문]fgets에대해

acc92의 이미지

fgets의 함수 내용이 어떻게 되어있는지 궁금하네요

예를들어 f1에 1부터 10까지 f2에는 a부터 j까지 한행에 한문짜씩 입력해놓고
다음과 같이 소스를 짜고 실행하면
FILE *f1;
FILE *f2;
char buff[1024];
int cnt = 0;
f1 = fopen((char*)"f1","r");
if(f1 == NULL)
{
printf("f1 open error\n");
exit(0);
}

f2 = fopen((char*)"f2","r");
if(f2 == NULL)
{
fclose(f1);
printf("f2 open error\n");
exit(0);
}

while(fgets(buff,1024,f1) != NULL)
{
printf("f1 address %x\n",f1);
printf("f1 : %s\n",buff);

if(fgets(buff,1024,f2) != NULL)
{
printf("f2 address %x\n",f2);
printf("f2 : %s\n",buff);
}
}

fclose(f1);
fclose(f2);

exit(0);

문제없이 f1과 f2의 내용이 번갈아 가며 찍힙니다
문제는 f1와 f2의 어드레스는 바뀌지 않고 파일을 한줄씩읽어 가는데
fgets함수안에 어디까지 읽었는지 정보가 저장되어있나요?

라스코니의 이미지

f1, f2는 FILE 이라는 형식으로 생성된 데이터입니다. 고로 FILE 의 선언을 찾아 보시면 해결 되겠네요.
stdio.h 나 libio.h 를 찾아보세요.