🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: de.comp.lang.c++
Article #700

Schlechte Eingabemethode?

#700
From: Kaspar Landsberg
Date: Wed, 01 Nov 1995 07:20
49 lines
2132 bytes
Moin,

beim Folgenden vermute ich, dass ich recht habe, bin mir jedoch nicht  
ganze sicher. Daher frage ich lieber mal nach... :-)

// bsp.cc - kleines Beispielprogramm

#include <iostream.h>

int main(void)
{
  cout << "\nName: ";
  char *eingabe = new char;  // eingabe zeigt jetzt auf Speicherplatz       
                             // von *einem* (1 Zeichen) char-Objekt
  cin >> eingabe;            // Benutzer gibt z.B. "Kaspar" ein (ohne " ")
  cout << "Ergebnis: " << eingabe << "\n";
  return 0;
}

So, der Knackpunkt liegt bei cout [...] << eingabe. Eigentlich wird nur  
die Adresse von eingabe ausgegeben, der auf ein char Objekt mit einem  
Zeichen zeigt. Da hier aber cout benutzt wird, wandelt es die Adresse  
automatisch in das Zeichen um, dessen Adresse von eingabe repraesentiert  
wird. Nun geht macht aber cout solange weiter, bis auf auf das Nullzeichen  
trifft ('\0'). Das heisst also, dass das obige Programm "hinhaut". Denn es  
gibt (im obigen Falle) "Kaspar" und nicht nur "K" aus.

Und nun zur eigentlichen Frage: Der Compiler hat eigentlich fuer eingabe  
nur Speicherplatz fuer ein Char-Objekt von *einem* Zeichen bereitgestellt.  
Daher wird doch, falls mehr als ein Zeichen eingegeben wird (z.b.  
"Kaspar") mehr Speicher benutzt, als eigentlich vom Compiler  
vorhergesehen, bzw. bereitgestellt, so dass eventuell schon besetzter  
Speicherplatz einfach durch die Eingabe von "Kaspar" bzw. von "aspar"  
ueberschrieben wird, oder??

Wenn ja, dann sollte man also derartige Methoden lieber ganz schnell  
vergessen, nehme ich kann...

PS Fuer "char *eingabe = new char" haette man (IMO) auch einfach nur
   "char *eingabe" nehmen koennen.


Danke,

Kaspar

--
Kaspar Landsberg         | "Ich denke, also bin ich hier falsch."
kl@kl.in-berlin.de       |                          = Unbekannt =
Technical Details
Message-ID: <5x0NrSGKhjB@kl.in-berlin.de>
Path: arc1-ca.pugleaf.net!kl.in-berlin.de!kl

Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!kl.in-berlin.de!kl
Date: 01 Nov 1995 08:20:00 +0100
From: kl@kl.in-berlin.de (Kaspar Landsberg)
Newsgroups: de.comp.lang.c++
Message-ID: <5x0NrSGKhjB@kl.in-berlin.de>
Subject: Schlechte Eingabemethode?
X-Newsreader: CrossPoint v3.1 R/C9730