2014-10-31 2 views
1

파일을 읽고 특정 조건에 행 번호를 저장하려고합니다.파일의 행 번호 받기

내가 알고있는 것은 fgets 라인을 읽는 데 사용되는 것이고, 커서를 위치한 라인 번호를 저장/가져 오는 방법이 있다는 것입니다.

+1

* cursor * 란 무엇을 의미합니까? 파일 포인터라면,'fgets()'로 읽을 때 라인 카운터를 사용하면 충분합니까? –

+0

'if (strncmp (ioarea, "ABC", 3) == 0)'이 조건에서 라인 번호를 저장하려고합니다. 카운터는 파일에서 "ABC"의 수를 알려주지 만, 각 fgets()에서 "ABC"의 행 번호 – Aravind

+0

은 0으로 시작한 카운터를 증가시킨 다음 조건을 확인합니다. 조건이 참이면 줄 번호를 저장하십시오. – user3629249

답변

4

표준 파일 스트림의 컨텍스트에는 커서가 없습니다. 파일 포인터가 있지만 커서는 없습니다. 커서는 콘솔/터미널 드라이버의 개념입니다. 파일 포인터를 사용하는 경우에도 일반적으로 라인 모드에서 사용하지 않으며 무작위 액세스/바이너리 형식 액세스를 사용합니다. 텍스트 모드에서 파일의 시작과 끝을 찾을 수 있습니다. 그러나 fseek는 "선 또는 커서"를 인식하지 못하므로 사용하지 마십시오.

정수로 읽은 행 수를 추적하기 만하면됩니다.

int line = 0; 
while((fgets(...)) != NULL) { 
    line++; 
    ... 
    if(...) { 
     // store line number wherever you need it 
     printf("found at line %d\n", line);  
    } 
}