Título: Funcion strcpy() propia Publicado por: juanma97 en 23 Febrero 2017, 10:47 am Hola, soy nuevo en el foro, estoy haciendo la funcion strcpy() de C pero a mano, es decir por mi cuenta, lo que no logro es que copie la cadena s2 en s1 y le he dado mil vueltas pero no se como, ¿alguna ayuda? Gracias.
Código
· Los códigos deben ir en etiquetas GeSHi >aquí las reglas del foro (http://foro.elhacker.net/reglas.htm) -Engel Lex Título: Re: Funcion strcpy() propia Publicado por: ivancea96 en 23 Febrero 2017, 12:10 pm Hay un problema, y es que no puedes comparar 2 cadenas (char*) con ==. (Son punteros, no cadenas realmente)
Código
Si lo que queires es probar, haz un printf de la cadena copiada y listo. Título: Re: Funcion strcpy() propia Publicado por: engel lex en 23 Febrero 2017, 12:14 pm Código
esto va a desbordarcuando lleque al \0 de s1 (el noveno caracter), escribirá la memoria fuera de s2 Título: Re: Funcion strcpy() propia Publicado por: juanma97 en 23 Febrero 2017, 15:50 pm Me sigue generando fallo, el metodo no me funciona, lo que hice fue:
Código
Título: Re: Funcion strcpy() propia Publicado por: ivancea96 en 23 Febrero 2017, 16:21 pm No sé qué hace la función DebeSerCierto, así que insisto, saca por pantalla la nueva cadena y compruébalo tú mismo primero.
Y fíjate en lo que dijo engel lex. Título: Re: Funcion strcpy() propia Publicado por: BloodSharp en 23 Febrero 2017, 21:53 pm Puedes probar la función de ReactOS...
https://doxygen.reactos.org/d4/d17/utclib_8c_source.html#l00231 Código
B# Título: Re: Funcion strcpy() propia Publicado por: ivancea96 en 23 Febrero 2017, 22:09 pm Es exactamente la misma función.
En cualquier caso, el problema es su forma de comprobarlo, no la función, que es correcta. Título: Re: Funcion strcpy() propia Publicado por: BloodSharp en 24 Febrero 2017, 01:40 am Un pequeño detalle con respecto al código que ahora lo miré bién:
Código
No estás comparando los mismos strings directamente, sinó que estás comparando 2 direcciones de memoria distintas, el s1 apunta a una dirección en alguna sección "data" y el segundo "abcdefgh" estará apuntando a otra... Para solucionarlo: Código
Edit: el resultado de "ser cierto" también creo que debería fallar porque estarías retornando la dirección de la variable de s2 que se encuentra en la pila, para comparar contenido de strings se recomienda funciones como strcmp y memcmp y/o sus variantes seguras... B# |