C чтение (из стандартного ввода) останавливается на 0x1a символ

В настоящее время я реализую преобразование Берроуза-Уилера (и обратное преобразование) для необработанных данных (например, JPG и т. д.). При тестировании на обычных данных, таких как текстовые файлы, никаких проблем не возникает. Но когда дело доходит до чтения файлов JPG, например. останавливается чтение символа 0x1a, также известного как замещающий символ. Я искал в Интернете решения, которые не принимают зависимый от ОС код, но без результатов ... Я думал читать в stdin в двоичном режиме, но это не так просто, я думаю. Есть ли простой способ решить эту проблему?

код:

buffer = (unsigned char*) calloc(block_size+1,sizeof(unsigned char));
length = fread((unsigned char*) buffer, 1, block_size, stdin);
if(length == 0){
    // file is empty
}else{
    b_length = length;
    while(length == b_length){
        buffer[block_size] = '\0';
        encodeBlock(buffer,length);
        length = fread((unsigned char*) buffer, 1, block_size, stdin);      
    }
    if(length != 0){            
        buffer[length] = '\0';
        encodeBlock(buffer,length);
    }
}
free(buffer);

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

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