Czytanie C (ze standardowego wejścia) zatrzymuje się przy znaku 0x1a

obecnie implementuję transformację Burrows-Wheeler (i odwrotną transformację) dla surowych danych (takich jak jpg itp.). Podczas testowania na normalnych danych, takich jak pliki tekstowe, nie występują żadne problemy. Ale jeśli chodzi o czytanie plików jpg, np. przestaje czytać przy znaku 0x1a aka zastępczym znaku. Szukałem w Internecie rozwiązań, które nie przyjmują kodu zależnego od systemu operacyjnego, ale bez rezultatów ... Myślałem o przeczytaniu standardowego wejścia w trybie binarnym, ale to nie jest łatwe. Czy istnieje jakaś prosta metoda rozwiązania tego problemu?

kod:

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