Leitura C (de stdin) pára no caractere 0x1a

Atualmente estou implementando a transformação Burrows-Wheeler (e transformada inversa) para dados brutos (como jpg etc.). Ao testar em dados normais, como arquivos de texto, nenhum problema ocorre. Mas quando se trata de ler arquivos jpg, por exemplo ele pára de ler no caracter 0x1a, também conhecido como caractere substituto. Eu tenho procurado na internet por soluções que não levam o código dependend OS mas sem resultados ... Eu estava pensando em ler em stdin no modo binário, mas isso não é muito fácil, eu acho. Existe algum método simples para resolver este problema?

código:

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);

questionAnswers(5)

yourAnswerToTheQuestion