Hallo Leute, ich habe hier noch ein paar kleinere Probleme mit meinen Zeichenketten und mich überkommt der Verdacht, dass ich was elemntares falsch mache. Frage 1: Ist das als Initialisierung korrekt? char irgendwas[8] = "00000000" Nun die elementare Frage ist das erste Zeichen irgendwas[0] oder irgendwas[1]?
Die Initialisierung ist nicht korrekt. Vom fehlenden Semikolon abgesehen wird der String mit einem Zeichen zuviel initialisiert - bei Stringlängen muss immer der Platz für die abschließende '\0' berücksichtigt werden. Deine Stringkonstante ist acht Zeichen lang, daher muss das Array Platz für 9 Zeichen bieten. Also: char sonstwas[9] = "00000000"; Das erste Element eines Arrays hat in C oder C++ immer den Index 0. Literaturhinweis: Kernighan & Ritchie, Programmieren in C, zweite Auflage, Hanser Verlag
>Frage 1: >Ist das als Initialisierung korrekt? > >char irgendwas[8] = "00000000" Nein! Umfassende "Gänsefüßchen" markieren den Inhalt als String, dessen Endekennung eine anhängende '0' (0x00) ist. In einem Feld mit 8 Elementen stehen Dir also nur 7 für den eigentlichen Inhalt bereit. Bedenke, daß in Deinem Fall nicht x mal 0x00 in diesem String enthalten ist, sondern x mal 0x30, was dem ASCII-Zeichen '0' entspricht. >Nun die elementare Frage >ist das erste Zeichen irgendwas[0] oder irgendwas[1]? Das Feld beginnt mit dem Index [0], was auch 'irgendwas + 0' entsprechen würde. Der Index [1] würde demzufolge 'irgendwas + sizeof(type)' entsprechen.
Es ist durchaus ok, den String so zu initialisieren, wenn man das abschließende \0 nicht braucht. Das ist in C ausdrücklich so eralubt. Meistens braucht man das \0 aber. Am einfachsten ist es, die Größe einfach wegzulassen. Der Compiler setzt dann autmatisch das richtige ein: char irgendwas[] = "00000000";
Noch eine abschließende Frage: '\0' ist ja wohl nur ein Zeichen und '\0' die normierte Umschreibung für ewas, was sich im geschriebenen Zeichensatz nicht darstellen läßt oder anderweitig verwendet wird. Ist '\0' zufällig #13 oder 0x0d?
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.