Foros del Web » Programación para mayores de 30 ;) » C/C++ »

¿en mi code donde fallè?

Estas en el tema de ¿en mi code donde fallè? en el foro de C/C++ en Foros del Web. holas, estaba viendo el foro y me anime aprender a programar en c++, empece a leer y leer, hice este code de practica: #include <cstdlib> ...
  #1 (permalink)  
Antiguo 22/12/2010, 15:52
 
Fecha de Ingreso: diciembre-2010
Ubicación: en mi casa.
Mensajes: 1
Antigüedad: 13 años, 4 meses
Puntos: 0
¿en mi code donde fallè?

holas, estaba viendo el foro y me anime aprender a programar en c++, empece a leer y leer, hice este code de practica:


#include <cstdlib>
#include <iostream>
#include <string.h>
#include <stdlib.h>
using namespace std;

int main(int argc, char *argv[])
{
char texto[]="hola mierda";
char saludo[]=" que tal?";
char *resul=NULL; // creo memoria dinamica
resul= (char*)malloc(100); //establezco el tamaño de memoria
strcat(texto,saludo);
strcat(resul,texto);
cout <<resul<<"\n";
system("PAUSE");
free(resul); //libera la memoria
return EXIT_SUCCESS;
}


lo compile con el DEV C++4.9.9.2 lo ejecuto y me muestra la cadena "hola mierda que tal?" seguido de "pulse una tecla para continuar", pero acompañado de un caracter extraño al inicio, despues compile el mismo code en visual c++ 6, y sale el mensaje normal, pero despues de pulsar una tecla, el prog colapsa me sale :
la instruccion en 0x214554784 hace referencia a la memoria en 0x124545745. la memoria no se puedo read.

http://s2.subirimagenes.com/otros/previo/thump_5691475cerror.jpg

el primer mensaje es el de VC++ y el otro devc++
¿me detectan algun error?
  #2 (permalink)  
Antiguo 23/12/2010, 04:12
Avatar de Munire  
Fecha de Ingreso: julio-2010
Ubicación: en el ciberdespacio (España)
Mensajes: 150
Antigüedad: 13 años, 9 meses
Puntos: 4
Respuesta: ¿en mi code donde fallè?

el fallo esta aqui:

char texto[]="hola mierda";

creas una cadena de caracteres de 12 elementos.

strcat(texto,saludo);

y aqui añades la cadena saludo a texto. la cadena saludo tiene 10 caracteres, mas los 12 de texto suman 22, que los guardas en texto, que solo puede tener 12.

vamos que tienes que reservar mas memoria a texto para que quepan las dos cadenas: char texto[30]

Etiquetas: c++, char, cout, malloc
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 08:40.