Frage zu Char (Array-Größe)
-
Hallöle,
bin gerade am Proggen mit Konsolenausgabe.Hier mal mein kleiner Code:
#include <conio.h> #include <iostream.h> main() { char wort[5]; cout << "Bitte Wort eingeben: "; cin >> wort; cout << wort[9]; getch(); }
Wenn ich das Laufen lasse, und schreibtisch eingebe,
bekomme ich in der Ausgabe ein s, was ja von der Position
im Array völlig OK ist.
Aber wieso geht das, wo ich doch bei char wort eine 5 gesetzt habe?
Trage ich eine 0 oder eine 1 ein, stürzt die Anwendung ab.Was genau bedeutet die Zahl bei char wort[5] ?
Ist es die maximale Anzahl an Zeichen oder
die höchste Position im Array, also von 0 bis 5 und somit 6 Zeichen lang?Danke
Dickus
-
Mit
char wort[5];legst Du ein Array aus 5 char-Werten an. Diese haben die Indizes 0 bis 4. Wenn Du da nun einfach etwas längeres hineinschreibst, ist das dem Programm erst mal egal, es schreibt einfach Werte in einen Bereich, der Deinem Programm nicht mehr gehört. Das führt zu unvorhersehbarem Verhalten. Manchmal geht es gut, manchmal verhält sich Dein Programm seltsam, manchmal stürzt es ab.
Wenn Du einen nullterminierten String hineinschreiben willst, muß das Array auch das abschließende Nullzeichen aufnehmen können, in Deinem Fall passt also maximal ein nullterminierter String mit der Länge 4 hinein, das 5. Zeichen (wort[4]) wäre in dem Fall das Nullzeichen.
-
Vielen Dank für die gute
und verständliche Erklärung.Da geht mir doch tatsächlich
ein Licht auf.Dickus