/* ----LENGUAJE C----
****************************
Alojamiento de texto.
*********************
pildora.c
******************************************
HILARIO IGLESIAS MARTÍNEZ
+++++++++++++++++++++++++++
Programa educativo
-----------------------
Realizado en plataforma LINUX Ubuntu 20.04.4 LTS.
Bajo el standard ANSI C.-C-11
Usado el IDE Sublime Text.
Consola de Linux.
Compilación: gcc pildora.c -o pildora
EJECUCIÓN.
*********
$ ./pildora
**********
Ampliando un programa anterior,-
como complemento formativo-, volevemos
a introducir por teclado una frase
de hasta 150 caracteres, esta vez admitiendo
espacios.
Dividimos el programa en una librería pildora.h
y pildora.c, que deberán estar bajo el mismo
directorio, o direccionado al mismo directorio
que pildora.c.
***********************************************
*/
#include <stdio.h>
#include <string.h> // Utilizado para la función strlen
#include "pildora.h"
#define CADENA 150
/*
Admitimos una cadena de hasta
150 caracteres
*/
int main(int argc, char const *argv[])
{
int i;
unsigned char *Tipo_CHAR_puntero;
char frase[CADENA];
printf("TEXTO A INGRESAR: ");
fgets(frase, CADENA, stdin);
// Quitamos el salto de línea
if ((strlen(frase) > 0) && (frase[strlen(frase) - 1] == '\n'))
{
frase[strlen(frase) - 1] = '\0'; //final
}
dump(frase, 280); /*Llamamos a la función dump para el volcado.
En este caso le pasamos una cadena y un volcado de 280 caracteres
en exadecimal
*/
Tipo_CHAR_puntero = (unsigned char *) frase;
for(i=0; i < 8; i++) { //Salida de 8 direccionamientos a letras.
printf(" || En la dirección | @ 0x%08p | está la letra:|| %c\n ||\x1b[33m", Tipo_CHAR_puntero, *Tipo_CHAR_puntero);
Tipo_CHAR_puntero++; /*Agregamos en avance 4 a la dirección
ya que un int tiene un tamaño de 4 bytes.*/
}
return 0;
}
*******************************************************************************************************
/*
----pildora.h--------
+++++++++++++++++++++++++++++
pildora.h deberá estar en el mismo
directorio que que pildora c*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/* dumps, funcion de volcado de memoria en hex byte,
y en formato dividido organizado e imprimible,
con referencias de exadecimal a dato de texto.
La llamada a esta función por parte de main en pildora.c
realiza dicho trabajo*/
void dump(const unsigned char *datos_de_buffer, const unsigned int longitud)
{
unsigned char byte;
unsigned int c, n;
for(c=0; c < longitud; c++) {
byte = datos_de_buffer[c];
printf("%02x ", datos_de_buffer[c]); // Mostrar bytes en hexadecimal
if(((c%16)==15) || (c==longitud-1)) {
for(n=0; n < 15-(c%16); n++)
printf(" ");
printf("|| ");
for(n=(c-(c%16)); n <= c; n++) { // Imprimir bytes por linea
byte = datos_de_buffer[n];
if((byte > 31) && (byte < 127)) // Rangos de impresión en consola Linux
printf("%c", byte);
else
printf(".");
}
printf("\n"); // Al final de cada linea salto
} // cierre de if
} // cierre de for
} //cierre de función principal main()
Comentarios sobre la versión: 1.0 (0)
No hay comentarios