0
시스템 호출을 사용하여 파일 내용을 출력하려고합니다. 이 코드는 한 줄만 포함하는 파일이 생길 때까지 훌륭하게 작동합니다. 이 경우 출력은 첫 번째 문자가없는 행입니다. 이 숯불은 어디서 없어지나요?lseek를 사용할 때 첫 번째 바이트가 인쇄되지 않습니다.
ssize_t rres,wres;
char buff[1];
off_t offset;
int fd = open("tester.txt",O_CREAT | O_RDWR , 0664);
int line_count = 5;
for(count = 0;line_count != 0;count--){
offset = lseek(fd, count, SEEK_END);
rres = read(fd,buff,1);
if(rres < 0){
return -1;
}
if(*buff =='\n') line_count--;
}
count *= -1; // get abs value of bytes
count++;
while(count--){
wres = write(STDOUT_FILENO,buff,read(fd, buff,1)); // output
}
파일의 마지막 5 줄을 출력하려고합니다. 하지만 5 라인 미만인 경우 첫 번째 문자는 출력되지 않습니다.
'for' 루프는 무엇을하고 있을까요? – Barmar
은 나머지 코드를 제공합니다. – achal
업데이트 코드, 한 줄 누락되었습니다 –