Aquí hay un problema extraño que me ha estado sacudiendo por un tiempo.Imprimir los valores hexadecimales de una matriz char * en C da valores impares para la entrada binaria
El programa está escrito en C89, y lee un archivo en una matriz char * de 16 bytes a la vez (usando fread y un tamaño de sizeof (char)). El archivo está fopen'd con las banderas "rb". La matriz se pasa luego a una función que básicamente toma los 16 valores hexadecimales y los pega en una cadena, cada valor separado por un espacio.
Aquí es donde entra la rareza. La función produce un bonito volcado hexadecimal, 16 bytes a la vez, para una entrada de archivo de texto que tengo. Pero se arruina si lo pruebo en una pequeña imagen de mapa de bits - termino con salida en la cadena como ffffff88 en lugar de solo 88.
Los valores hexadecimales se colocan en la cadena de salida usando sprintf ("% 02x" , entrada [i]); en un bucle
¿Por qué funcionaría esto correctamente para algunos archivos pero no para otros?