fgets에 대한 소스 질문이요
활력초
c언어에서도 스트림이 있다고 해서 조사해보다가 지식인에서 소스를 하나 찾았는데요.
이 소스에서 궁금한점이 있습니다.
result.txt란 파일을 읽어서 화면에 출력하는 거잖아요. 3줄부터 하나씩 읽는거잖아요. 5줄까지 읽고요.
한줄씩 읽어서 화면에 출력하는게 맞죠??
그런데 밑에 void getLine()메소드 설명 자세히좀 해주세요. 이 메소드는 왜 필요한거죠?
for ( i = 0; i nLine; i++ ) 반복문이 어떻게 실행되고 있는지 좀 잘 정리가 안됩니다;;
rewind(stream); 이것도 뭔지 모르겠어요; 설명좀 해주세요^-^;
?xml:namespace prefix = o ns = urn:schemas-microsoft-com:office:office /?xml:namespace prefix = o /#include stdio.h
void GetLine(char *buffer, int nLine, FILE *stream);
int main()
{
char lpszBuffer[256];
P class FILE *stream;
int start = 3;
int end = 5;
int i;
stream = fopen(result.txt, rt);
for ( i = start; i = end; i++ )
{
GetLine(lpszBuffer, i, stream);
printf(%s, lpszBuffer);
}
fclose(stream);
return 0;
}
void GetLine(char *buffer, int nLine, FILE *stream)
{
int i;
rewind(stream);
for ( i = 0; i nLine; i++ )
{
fgets(buffer, 256, stream);
}
}
-
두동
다섯 줄만 출력하는 것은
int end = 5;로 되어 있기 때문입니다. -
유미
전 아에 출력을 안하는데욤;;
-
하늘빛눈망울
아~ 감사합니다+_+
-
클
int feof(FILE*); 라는 함수가 있습니다. 넘겨준 파일포인터가 파일의 끝을 가리키면, 다시 말하면 파일 끝까지 읽었다면 1을, 아니면 0을 리턴하는 함수입니다.
while(1) {
if(feof(stream)) break;
// todo
}
이렇게 빠져나오면 되겠죠 -
라임나무
이 소스로 파일이름만 변경해서 해봤는데 딱 5줄까지만 읽어서 화면에 출력하더라고요. 그런데 파일 끝까지 출력하려면 어떻게 해야하죠? nLine을 어떻게 고쳐야하나요? 아니면 다른걸 고쳐야 하나요? (참고로 파일마다 줄길이가 다 달라서 어떻게 해야할지 모르겠습니다ㅠ)
-
은별
rewind()함수는 파일포인터를 파일의 시작으로 옮기는 함수입니다. fseek(FILE*, 0, SEEK_SET);과 같죠.
파일의 처음으로 옮긴 뒤에 nLine 번만큼 한 줄씩 읽으면, 최종적으로 buffer에는 nLine번째의 줄의 내용이 들어가 있습니다.