C: Mostrar un fichero en hexadecimal
Mostrar un fichero en hexadecimal y en ASCII, en dos columnas
Lenguaje: C (compilador: Turbo C)
Categoría: Ficheros
/* Fuente procedente de ErrorDeSintaxis.es */
/* Mostrar un fichero en hexadecimal y en ASCII, */
/* en dos columnas */
/* Compilador: Turbo C */
/* Nivel: Básico */
/* Disponible desde 17/08/2011 */
/* Aportado por Nacho */
/* Autor original: Nacho Cabanes */
#include <stdio.h> main() { FILE *fichero; char nombre[20]; char datos[16]; int i, maximo, contador; printf("Fichero a analizar: "); gets(nombre); fichero=fopen(nombre, "rb"); if (fichero == NULL) puts("Fichero no encontrado!"); else { contador = 0; /* Mientras no se acabe el fichero */ while (!feof(fichero)) { maximo = 16; /* Supongo que hay 16 datos */ /* Leo una linea */ for (i = 0; i < maximo; i++) { datos[i]=fgetc(fichero); if (feof(fichero)) /* Si se acaba, apunto donde */ maximo = i; } /* Escribo Hex */ for (i = 0; i < maximo; i++) { printf("%02X ", datos[i]); } /* Si es la ultima linea, relleno con espacios */ if (maximo<16) for (i = maximo; i < 16; i++) printf(" "); printf("| "); /* Escribo ASCII */ for (i = 0; i < maximo; i++) { if ((datos[i] < 32) || (datos[i] > 127)) printf("."); else printf("%c", datos[i]); } /* Avanzo para la siguiente linea */ printf(" "); /* Compruebo si se ha acabado la pagina */ contador ++; if (contador == 20) { getchar(); contador = 0; } } } fclose(fichero); }