Función strcpy propia en lenguaje C. (copiar una cadena en otra)

Iniciado por NOB2014, 27 Diciembre 2016, 20:35 PM

0 Miembros y 1 Visitante están viendo este tema.

NOB2014

Hola, gente ¿cómo están? ya los extrañaba. -
Estoy repasando punteros y me encuentro en el libro de los autores de C (creo que lo son) con esta función(d) que no logro hacer que de los resultados esperados, me podrían decir que estoy haciendo mal. -

#include <stdio.h>

void d( char *c, char *a);

int main( void ){
char a[] = "rosita", *b = "rosita", c[7];

printf("\n %s", a );
printf("\n %s \n\n ", b );

a[0] = 'R';
b = a;

printf("\n %s", a );
printf("\n %s \n\n ", b );

d( c, a );

return 0;
}



void d( char *c, char *a ){
while( (*c++ = *a++) )
;

printf("\n %s\n", c );
}

Saludos.
abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-

engel lex

Citarno logro hacer que de los resultados esperados

como decir algo sin decir nada...

lo ejecuto y según la poca información que das (la palabra strcpy, que dice más que todo el resto que escribiste) funciona bien

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

MAFUS

No te funciona porque cuando copias datos mueves los punteros y despues haces un printf sobre c, que está una posición más allá de la cadena copiada.

NOB2014

#3
MAFUS, estas en lo correcto, para no romperme tanto la cabeza, ¿me podrías decir como apuntar al primer carácter de c sin efectuar un nuevo bucle? -


EDITO: Con la siguiente linea lo consigo, desconozco si hay una manera mejor. -
c -=7;

Saludos.
abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-

engel lex

si no usas el printf dentro de la función sino dentro de main funciona bien...

teoricamente es como estaría destinado a ser

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

NOB2014

Ahora si nos entendemos, correctísimo, me funciona todo a la perfección, muchas gracias. - ;-) ;-) ;-)

Un abrazo.
abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-