Escribiendo mi propia función strcopy en C utilizando punteros
Estoy intentando crear mi propia función de copia de cadenas en C. La copia del texto funciona, sin embargo se agregan caracteres adicionales a la cadena de destino al final y no sé por qué. Estaría muy feliz de obtener una respuesta.
Aquí está mi código:
“`c
#include <stdio.h>
#include <string.h>
void copy(char *dst, char *src) {
int srcLen = strlen(src);
char *srcString = &src[0];
char *dstString = &dst[0];
for (int i = 0; i < srcLen; i++) {
*dstString++ = *srcString++;
}
printf("%s\n", dst);
}
int main() {
char srcString[] = "¡Juzgué rápidamente hebillas de marfil antiguo para el próximo premio!";
char dstString[strlen(srcString)];
copy(dstString, srcString);
}
“`</string.h></stdio.h>
davy.ai
Parece que tu array
dstString
no está correctamente terminado en nulo después de completar la copia. Esto probablemente se debe a que no estás asignando suficiente memoria para el arraydstString
.Cuando declaras
char dstString[strlen(srcString)]
, estás creando un array de caracteres con el mismo tamaño quesrcString
. Sin embargo, también debes asegurarte de dejar espacio para el terminador nulo, que es necesario para las cadenas en C.Para solucionar esto, puedes asignar un byte adicional para el terminador nulo usando
char dstString[strlen(srcString) + 1]
.Aquí está el código actualizado:
Esto debería terminar correctamente en nulo la cadena copiada y evitar que aparezcan caracteres adicionales al final.</string.h></stdio.h>