Coding Tip/C/C++
파일 내용을 거꾸로 읽기 tail 구현 (FILE 구조체, fseek() 사용)
장피디
2011. 7. 14. 17:25
반응형
리눅스에 자주 사용하는 tail 명령어와 같은 역활을 하는 C 코드.
옵션으로 사용하는 몇 라인 긁어오라는건 for문 하나만 추가하면 구현이 가능하다.
FILE 객체에 _ptr 필드 가지고 난리를 치다가 결국 안되서 fseek을 사용해서 구현했더니 잘 된다.
현재는 One_Line 배열에 한줄만 가져가는 코드인 상태.
#define LINE_CHECK_BYTE_NUM 512
char *InquireLog()
{
FILE *fp = NULL;
char c;
long leng=1l;
char One_Line[512];
if((fp = fopen("test.txt","rb")) == NULL)
fprintf(stderr,"LOG_PATH Open Error\n");
while(leng++ < LINE_CHECK_BYTE_NUM){
fseek(fp,-(leng),SEEK_END);
c = fgetc(fp);
if(c == '\n'){
fgets(One_Line,leng,fp);
//printf("One_Line : %s\n",One_Line);
break;
}
}
return One_Line;
}
반응형