Programación General > C/C++

 Error en función y no se por qué

(1/1)

krnl64:
Hola a todos,
Hice una función para trabajar con un array de strings pero no sé por qué no me funciona.
Les pongo el code:

--- Código: C --- void test( char **aray,int size){ char **tmp;int i=0; tmp=(char**)calloc(size,sizeof(char*)); for(i=0;i<size;i++){    *(tmp+i)=(char*)calloc(strlen(*(aray+i)+1),sizeof(char));       //strcpy(*(tmp+i),*(aray+i));    memcpy(*(tmp+i),*(aray+i),strlen(*(aray+i)+1));}     for(i=0;i<size;i++){    free(*(tmp+i));} free(tmp);   
Si uso la declaración de la linea 14, no sé por qué no copia bien la cadena y si uso la declaración de la línea 13 me peta al hacer free.
Pueden decirme que hago mal ?
Gracias.

krnl64:
Vale, ya me contesto solo xD.


--- Citar ---
--- Código: C --- *(tmp+i)=(char*)calloc(strlen(*(aray+i)+1),sizeof(char));     malditos paréntesis xD.

--- Código: C --- *(tmp+i)=(char*)calloc(strlen(*(aray+i))+1,sizeof(char));  
--- Código: C --- memcpy(*(tmp+i),*(aray+i),strlen(*(aray+i)+1));  Idem

--- Código: C --- memcpy(*(tmp+i),*(aray+i),strlen(*(aray+i))+1);       
--- Fin de la cita ---
Ya funciona con memcpy o strcpy.
La duda que me queda es qué es más recomendable el memcpy o el strncpy.
Gracias

m0skit0:

--- Cita de: "krnl64" ---La duda que me queda es qué es más recomendable el memcpy o el strncpy.
--- Fin de la cita ---
Depende. memcpy() copia bytes, sin importarle nada más. strncpy() actúa como copia de cadenas de caracteres, esto es, si encuentra un byte nulo en el buffer origen, a partir de ahí ya rellena con ceros el buffer destino hasta completar el tamaño requerido.

Usa memcpy() para copiar buffers y strncpy() para cadenas de caracteres.

Saludos

Navegación

[0] Índice de Mensajes

Ir a la versión completa