Printf imprime lixo após a chamada read (). O deslocamento é sempre impresso como 0
#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/types.h>
#include <stdint.h>
int main()
{
int file;
off_t offset;
if((file=open("testfile.txt",O_RDONLY)) < -1)
return 1;
char buffer[19];
if(read(file,buffer,19) != 19) return 1;
fprintf(stdout,"%s\n",buffer);
if(offset = lseek(file,-19,SEEK_END) < 0) return 1;
fprintf(stdout,"%jd\n",(intmax_t)offset);
if(read(file,buffer,19) != 19) return 1;
fprintf(stdout,"%s\n",buffer);
return 0;
}
A saída é a seguinte:
Este é um arquivo de teste
0
dele é um arquivo de teste
testfile.txt:
Este é um arquivo de teste Testando como SEEK_END funciona Este é um arquivo de teste
Tentei uma formatação diferente para deslocamento, como% ld,% d, mas a saída ainda é a mesma. Não é possível descobrir por que o lixo aparece no final da primeira e da última linha. Por favor ajude.