C/Visual C - Strcpy() y cadenas

 
Vista:

Strcpy() y cadenas

Publicado por tirengarfio (2 intervenciones) el 24/07/2008 18:50:15
Saludos,

cuando intento compilar este codigo

[code=text]
int main(int argc, char* argv[])
{
char cad1[100]="javi";

char * cad2;

cad2 ="hola";

strcpy( cad2, cad1);

printf ("%s", cad1);

return 0;


}

[/code]

me da un error al ejecutarlo

pero cuando ejecuto este de aqui abajo no me da errores, por que?

[code=text]
int main(int argc, char* argv[])
{
char cad1[100]="javi";

char * cad2;

cad2 ="hola";

strcpy( cad1, cad2); // SOLO CAMBIO ESTA LINEA

printf ("%s", cad1);

return 0;

}
[/code]

Ciao

Javi
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Strcpy() y cadenas

Publicado por igor (22 intervenciones) el 24/07/2008 20:51:55
Es un problema de punteros.

Estás asignando una cadena a un puntero que no apunta a ningún sitio de memoria. De manera que almacena la cadena "hola" en cad2 que apunta a un lugar desconocido de memoria.

Esto significa que estamos escribiendo en zonas de memoria desconocidas que pueden tener código del programa o cualquier otra cosa.

Tienes que hacer esto:

char *cad2;

cad2 = new char[10]; // o en su defecto memalloc creo

strcpy(cad2,cad1);

Si lo piensas es lógico. Cuando copias cad2 en cad1 no da error, porque cad1 está en memoria (char cad1[100]). Pero si lo haces al revés escribes en ?????.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Strcpy() y cadenas

Publicado por tirengarfio (2 intervenciones) el 25/07/2008 01:36:08
Gracias Igor es cierto!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar