Printf печатает мусор после вызова read (). Смещение всегда печатается как 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;
}

Выход выглядит следующим образом:

Это тестовый файл

0

это тестовый файл

testfile.txt:

Это тестовый файл. Тестирование работы SEEK_END. Это тестовый файл.

Я пробовал другое форматирование для смещения, например,% ld,% d, но вывод остается прежним. Не могу понять, почему мусор появляется в конце первой и последней строки. Пожалуйста помоги.

Ответы на вопрос(3)

Ваш ответ на вопрос