Cómo copiar estructura completa en una matriz de bytes (buffer de caracteres) en lenguaje C?

Aquí, vamos a aprender cómo copiar estructura completa en una matriz de caracteres (matriz de bytes) en el lenguaje de programación C?

Ese tipo de requisito puede ocurrir muchas veces, cuando se quiere escribir una memoria intermedia completa en la memoria o mantener un almacenamiento de datos en una memoria intermedia de caracteres.

En el ejemplo dado, hay una estructura persona con el nombre dos miembros y edad , vamos a asignar los valores while declarar la variable de estructura persona .

Vamos a copiar la estructura persona en un array de caracteres (matriz de bytes) amortiguar y luego imprimir el valor de la memoria intermedia , ya búfer contendrá los caracteres no imprimibles, por lo que estamos imprimiendo los valores hexadecimales de todos los bytes.

Consideremos el ejemplo

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct Person
{
char name[20];
int age;
};
int main()
{
//structure variable declaratio with initialisation
struct Person person={"Deniss Ritchie", 60};
//declare character buffer (byte array)
unsigned char *buffer=(char*)malloc(sizeof(person));
int i;
//copying....
memcpy(buffer,(const unsigned char*)&person,sizeof(person));
//printing..
printf("Copied byte array is:n");
for(i=0;i<sizeof(person);i++)
printf("%02X ",buffer[i]);
printf("n");
//freeing memory..
free(buffer);
return 0;
}

salida

Copied byte array is:
44 65 6E 69 73 73 20 52 69 74 63 68 69 65 00 00 00 00 00 00 3C 00 00 00

vamos a entender la salida

nombre tiene 20 bytes, y aquí es el valor de la memoria intermedia

44 65 6E 69 73 73 20 52 69 74 63 68 69 65 00 00 00 00 00 00

edad tiene 4 bytes y aquí está el valor de la memoria tampón

3C 00 00 00

(Aquí 3C es el valor hexadecimal de 60)


Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *