파일 행 역순 출력 프로그램 질문드립니다..

testcur의 이미지

#include
#include
#include
#include

int main(int argc,char *argv[])
{
int fd1,fd2;
int loc;
int i=0,j;
char buf[512];
char tmp;

if((fd1=open(argv[1],O_RDONLY)) == -1)
{
perror(argv[1]);
exit(1);
}
if ((fd2=open(argv[2],O_WRONLY|O_CREAT|O_TRUNC,0777)) == -1)
{
perror(argv[2]);
exit(1)
}
if (loc=lseek(fd1, -sizeof(char), SEEK_END)<0) {
printf (“lseek() failed\n”);
return 1;
}
While (loc>=0) {
read (fd1, &tmp, sizeof(char));
buf[i++]=tmp;
if (tmp == ‘\n’) {
for (j=i-2; j>=0; j--) {
write (fd2, &(buf[j]), sizeof(char));
}
write(fd2, “\n”, sizeof(char));
i=0;
}
loc=lseek(fd1, -2*sizeof(char), SEEK_CUR);
}
close(fd1);
close(fd2);
}

lseek를 이용하여 텍스트 파일의 줄을 역순으로 출력하는 프로그램을 작성하고있는데
마지막줄에서 두번쨰 줄까지만 출력되고 맨첫번째 줄이 출력되지않네요...
어디에 오류가있는지 질문 드립니다...

ㅇㅇ의 이미지

그냥 디버깅을 한줄한줄 하시면서 Local 확인하시면 간단하게 해결 가능하실듯

세벌의 이미지

소스코드 는 code 태그 안에 넣어 주쇼.