[질문] 파일의 특정 라인만 읽어 올려면 어떻게 해야 하나요?

kimyh의 이미지

"test.txt"라는 파일이
aaaaaaaaaa
bbbbbbbbb
cccccccccccccccc
dddddddddd
라고 되어 있을때 두번째 또는 세번째 라인만 읽어 올려면 어떻게
해야 하는지요.

검색해보니 fgets()나 scanf()를 사용한다고 해서 한참을 들여다봐도
초보라서 잘 이해를 못하겠군요.

뭐 while문이나 for문으로는 읽을수 없는가요?
도움좀 주시면 감사하겠습니다.

only2sea의 이미지

순차적으로 한 줄씩 읽는 것을 알고 계시다면 두 번째 라인을 읽으시려거든 첫 번째 라인을 읽은 뒤에 그것을 사용하지 않고 두 번째 라인을 읽으면 되지 않을까요?

언어는 C 언어라고 생각을 하겠습니다. 세 번째 라인을

char line[1024];
FILE *f;
int pos = 3; /* 세 번째 라인을 읽습니다. */
int i;
 
f = fopen("test.txt", "r");
 
for (i=0; i<pos; i++)
    fgets(line, 1024, f);
 
/* line에는 pos 번째 라인이 들어가겠지요. */

대략적으로 이렇게 하면 되지 않을까요?

아마록에서 가사와 앨범 표지를... http://kldp.net/projects/amarok-script/ 블로그: http://turtleforward.blogspot.com

kimyh의 이미지

감사 합니다.
이렇게 직접 소스까지 만들어 주신데 정말 감사드립니다.
열심히 공부 하겠습니다.

==================================
살며 그리고 사랑하며...
정보는 공유할때 그 가치가 있는것.....
나의 조그만 지식공유는 남에게 엄청난 기쁨을 안겨 준다.

살며 그리고 사랑하며...
정보는 공유할때 그 가치가 있는것.....
나의 조그만 지식공유는 남에게 엄청난 기쁨을 안겨 준다.

harisoo의 이미지

물론 이런경우는 없지만 한라인이 1024가 넘으면 위소스로는 원하는 결과를 얻을 수 없습니다.

glibc의 getline()함수를 사용하세요

사용법은

man getline

kimyh의 이미지

좋은 정보 감사합니다.
그런경우가 있군요.
공부하는데 많은 도움이 되겠습니다.
다시 한번 감사드립니다.

====================================
살며 그리고 사랑하며...
정보는 공유할때 그 가치가 있는것.....
나의 조그만 지식공유는 남에게 엄청난 기쁨을 안겨 준다.

살며 그리고 사랑하며...
정보는 공유할때 그 가치가 있는것.....
나의 조그만 지식공유는 남에게 엄청난 기쁨을 안겨 준다.