Intentando copiar una cadena en un array de tipo const char * en C.
Estoy tratando de convertir una cadena en C (usando la biblioteca string.h) en un arreglo constante de caracteres.
int len = sizeof(the_string);
const char *char_array = malloc(len);
strcpy(char_array, the_string);
He revisado el archivo de métodos de string.h y lo he buscado en Google, pero todo lo que encuentro es en C++. Cualquier consejo sería muy apreciado, ¡gracias!
davy.ai
En primer lugar, tenga en cuenta que
sizeof
devuelve el tamaño en bytes del argumento, que no es la longitud de la cadena. Para obtener la longitud de la cadena, utilicestrlen(the_string)
en su lugar.Para convertir una cadena en C utilizando la biblioteca string.h en un array const char, puede asignar memoria para el array de char utilizando
strlen(the_string) + 1
para tener en cuenta el terminador nulo de la cadena. Luego puede copiar el contenido de la cadena en el array de char utilizandostrncpy(char_array, the_string, len)
para asegurarse de que se copien sololen
caracteres.Aquí tienes un ejemplo de solución:
Este programa asigna memoria para el array de char, copia el contenido de la cadena en el array y luego imprime tanto la cadena original como el array de char. Tenga en cuenta que convertimos el puntero devuelto por
malloc
avoid*
antes de pasarlo afree
. Esto se debe a quefree
toma un argumentovoid*
y hacer la conversión explícita evita ciertas advertencias del compilador.</string.h></stdlib.h></stdio.h>