Duda copia cadenas diferente tipo.

Iniciado por cartorami, 2 Septiembre 2016, 14:24 PM

0 Miembros y 1 Visitante están viendo este tema.

cartorami

Hola!

Primero de todo decir que estoy empezando a aprender a programar en C y que estoy muy (MUY) verde  :xD :xD , una vez dicho esto:

Estoy realizando un proyectito en C y en uno de los pasos tengo que copiar una cadena de un tipo definido como u8 que se corresponde con unsigned char en otra tabla de char.

Lo he intentado haciendo un cast en la función strcpy y utilizando la función memcpy, que he localizado por internet, pero se ve que no lo hago bien porque siempre me da core en ese paso.

Más concretamente, tengo lo siguiente:

typedef unsigned char u8;
typedef struct {
u8 tipo;
u8 nombre_fichero[100];
} APDU_PETICION;

char * nombre_del_fichero = NULL;

Como digo, mi intención es copiar el contenido de la tabla "nombre_fichero" contenida en la estructura, en la tabla nombre_del_fichero, pero soy incapaz.

Si alguien pudiese ayudarme a resolver este problema estaría muy agradecido  :P

Un saludo!


AlbertoBSD

Hola tienes que poner el código de como haces la copia de datos.

Me imagino que haces algo como:

memcpy(nombre_del_fichero,Var.Nombre_fichero,100);

Ahora me pregunto ¿Nombre del fichero ya está inicializado?

El detalle que nombre del fichero es un apuntador pero no veo que lo inicialises.

Deberia de quedar asi:

char * nombre_del_fichero = NULL;
nombre_del_fichero = malloc(100);
//aca el memcpy o strcpy
//usamos la variable nombre_del_fichero
free(nombre_del_fichero); // Hacer free a la variable una vez que no la utilicemos mas


Saludos
Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW

cartorami

En principio lo intento haciendo uso de la función strcpy como sigue:
-----------------------------------------------------------------------
#define TAMANO 100

typedef unsigned char u8;

typedef struct {
u8 tipo;
u8 nombre_fichero[TAMANO]; //Esta cadena contiene "test.txt"
} APDU_PETICION;

APDU_PETICION peticion;

char * nombre_del_fichero = NULL;

strcpy(nombre_del_fichero, (char *) peticion.nombre_fichero);

---------------------------------------------------------------------------

con memcpy cambio la ultima línea por:

memcpy(nombre_del_fichero, peticion.nombre_fichero, TAMANO);

pero en ambos casos me salta un core.  :-\ :-\ :-\

AlbertoBSD

Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW

cartorami

Pues sí, tienes toda la razón del mundo, no lo tenia inicializado  :-[ :-[ :-[ :-[ (fallos de novato  :P )

Mil gracias!!  ;D ;D