Article View: es.comp.os.linux.programacion
Article #7391Re: strcat() en c++
From: Lepton
Date: Wed, 05 Mar 2003 21:28
Date: Wed, 05 Mar 2003 21:28
63 lines
2908 bytes
2908 bytes
On Wed, 5 Mar 2003, Edgar de la cruz wrote:
# Resulta que estaba haciendo el siguiente programilla en c++ en mi redhat
# linux 7.3:
#
# //---------------archivo main.cpp----------------------
# #include <iostream.h>
# #include <string.h>
# #include <stdlib.h>
#
# void main()
# {
# char *cad1, *cad2;
# int i=0, limsup=0;
#
# cad1=(char*)malloc(20*sizeof(char*));
# cad2=(char*)malloc(20*sizeof(char*));
cad1 = malloc(20);
o en todo caso:
cad1 = malloc(20 * sizeof(char)); pero sizeof(char) = 1 siempre..
# cad1="";
genial, primero reservas 20 * sizeof(char *) (80, en tu caso) y lo
asignas a la variable 'cad1' para immediatamente despues asignar
un puntero que apunta a un string nulo en la variable 'cad1', perdiendo
con ello la unica referencia que tenias al espacio reservado antes
para cad1.
# cout<<"Cuantas cadenas desea introducir?: ";
# cin>>limsup;
#
# for(i=0;i<limsup;++i)
# {
# cout<<"Introduzca una cadena: ";
# cin>>cad2;
# strcat(cad1,cad2); //aparentemente es en esta lοΏ½nea
a parte de lo obvio, este programa esta destinado a fallar, ya que
(aparentemente) reservas 20 caracteres para 'cad1', y otros tantos
para 'cad2', pero en ningun momento compruebas que ese limite no
se sobrepasa.
# //en donde falla.
# strcat(cad1,",");
# cout << "cad2 se ha concatenado con cad1,";
# cout << " entonces cad1 vale: " << cad1 << endl;
# }
# }
# //----------------fin del archivo main.cpp-------------------------
# lo estoy compilando con el g++ 2.96 en redhat 7.3, con el ddd 3.3. con la
# siguiente orden.
# g++ -g -o main main.cpp
Y para rematar la jugada, usas un 'gcc' que no es tal, ya que la
2.96 no existe oficialmente (es un invento de redhat)
Saludos,
Lepton.
Technical Details
Message-ID:
<Pine.LNX.4.50.0303052223440.228-100000@lorien.local>Path:
arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!newsfeed.stanford.edu!headwall.stanford.edu!fu-berlin.de!uni-berlin.de!c-134-121-85.d.dial.de.ignite.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-05 13:33:55 PST Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!newsfeed.stanford.edu!headwall.stanford.edu!fu-berlin.de!uni-berlin.de!c-134-121-85.d.dial.de.ignite.NET!not-for-mail From: Lepton <reinob@jazzfree.com> Newsgroups: es.comp.os.linux.programacion Subject: Re: strcat() en c++ Date: Wed, 5 Mar 2003 22:28:22 +0100 Lines: 64 Message-ID: <Pine.LNX.4.50.0303052223440.228-100000@lorien.local> References: <b453rv$6ma$1@julieta.escomposlinux.org> NNTP-Posting-Host: c-134-121-85.d.dial.de.ignite.net (62.134.121.85) Mime-Version: 1.0 Content-Type: TEXT/PLAIN; charset=iso-8859-1 Content-Transfer-Encoding: 8BIT X-Trace: fu-berlin.de 1046900033 62752738 62.134.121.85 (16 [130846]) X-Orig-Path: localhost!lepton X-X-Sender: lepton@lorien.local In-Reply-To: <b453rv$6ma$1@julieta.escomposlinux.org>