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
Ir a la versión completa