🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: es.comp.os.linux.programacion
Article #7311

Re: strcat() en c++

#7311
From: (el Meyer)
Date: Thu, 06 Mar 2003 14:13
49 lines
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-mail
References: <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)