Article View: es.comp.os.linux.programacion
Article #7311Re: strcat() en c++
From: (el Meyer)
Date: Thu, 06 Mar 2003 14:13
Date: Thu, 06 Mar 2003 14:13
49 lines
2571 bytes
2571 bytes
Comento tu codigo...
| void main()
| {
| char *cad1, *cad2;
| int i=0, limsup=0;
| cad1=(char*)malloc(20*sizeof(char*));
| cad2=(char*)malloc(20*sizeof(char*));
Al usar malloc, en vez de sizeof (char *) tendr�as que usar sizeof(char), ya que reservas
memoria para una cadena de caracteres, no de punteros.
Si trabajas en C++, es aconsejable ser�a usar el m�todoespec�fico de C++ para reservar
memoria (new):
| cad1="";
Buf... Esta asignaci�n es tremenda. Inicialmente tenias la variable cad1 apuntando a la
zona de memoria que habias reservado, y asi est�s haciendo que apunte a otro sitio
diferente.
La forma correcta de inicializaci�n ser�a
memset (cad1, '\0', 20);
o si solamente quieres poner a '\0' el primer caracter
cad1[0] = '\0';
| cout<<"Introduzca una cadena: ";
| cin>>cad2;
Al hacer el cin tendrias que comprobar que el tama�o de la cadena leida sea menor que la
zona de memoria reservada para cad2.
| strcat(cad1,cad2); //aparentemente es en esta l�nea
| //en donde falla.
Al hacer el strcat tendr�as que tener en cuenta que no se sobrepasase el maximo que has
reservado previamente para cad1.
Por cierto, al haber reservado memoria con malloc, lo suyo ser�a que la liberaras con
free (sobre todo si el programa va a ser m�s complicado y va a reservar mucha memoria de
forma din�mica). Si te has decidido a usar new, para liberar la memoria hay que usar
delete.
Saludos
Oscar ........................................
Technical Details
Message-ID:
<u3le6vou505e66u67elcca9u7q5h17su52@4ax.com>Path:
arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!newsfeed.stanford.edu!headwall.stanford.edu!fu-berlin.de!uni-berlin.de!88.red-80-38-95.pooles.rima-tde.NET!not-for-mailReferences:
<b453rv$6ma$1@julieta.escomposlinux.org>Show Full Headers
Complete Article Headers
X-Google-Language: SPANISH,ASCII X-Google-Thread: f86c8,aff69d8b36562df0 X-Google-Attributes: gidf86c8,public X-Google-ArrivalTime: 2003-03-06 06:27:08 PST Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!newsfeed.stanford.edu!headwall.stanford.edu!fu-berlin.de!uni-berlin.de!88.red-80-38-95.pooles.rima-tde.NET!not-for-mail From: "(el Meyer)" <elmeyerQUITAESTO@iespana.es> Newsgroups: es.comp.os.linux.programacion Subject: Re: strcat() en c++ Date: Thu, 06 Mar 2003 15:13:31 +0100 Lines: 49 Message-ID: <u3le6vou505e66u67elcca9u7q5h17su52@4ax.com> References: <b453rv$6ma$1@julieta.escomposlinux.org> NNTP-Posting-Host: 88.red-80-38-95.pooles.rima-tde.net (80.38.95.88) Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8bit X-Trace: fu-berlin.de 1046960826 64470924 80.38.95.88 (16 [74848]) User-Agent: Hamster/1.3.23.0 X-Newsreader: Forte Free Agent 1.93/32.576 English (American)