Article View: de.comp.lang.c++
Article #700Schlechte Eingabemethode?
From: Kaspar Landsberg
Date: Wed, 01 Nov 1995 07:20
Date: Wed, 01 Nov 1995 07:20
49 lines
2132 bytes
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!klShow 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