πŸš€ go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: strcat() en c++

#7391
From: Lepton
Date: Wed, 05 Mar 2003 21:28
63 lines
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-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-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>