Oto dziwny problem, który mnie trochę zbijał.Drukowanie wartości szesnastkowych tablicy znaków * w C daje wartości nieparzyste dla wejścia binarnego
Program jest napisany w C89 i czyta plik w tablicy char * 16 bajtów na raz (przy użyciu fread i sizeof size (char)). Plik jest fopen'd z flagami "rb". Tablica jest następnie przekazywana do funkcji, która w zasadzie przyjmuje 16 wartości szesnastkowych i umieszcza ją w łańcuchu, przy czym każda wartość jest oddzielona spacją.
Oto miejsce, w którym pojawia się dziwność. Ta funkcja generuje ładunek heksadecymalny, 16 bajtów na raz, dla danych wejściowych do pliku tekstowego, które mam. Ale wkręca się, gdy próbuję go na małym obrazie bitmapowym - kończę z wyjściem w łańcuchu jak ffffff88 zamiast tylko 88.
Wartości szesnastkowe są umieszczane w łańcuchu wyjściowym za pomocą sprintf ("% 02x" , input [i]); w pętli.
Dlaczego to działa poprawnie w przypadku niektórych plików, ale inne nie?