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