Suche
Suche Menü

Nullterminiert

Ein String besteht in C aus einem char-Feld. Dieses Feld ist meist größer als der der String selbst. Ein Beispiel:

char text[100] = "Hallo";

Hier speichern wir in einem Feld der Größe 100 lediglich 5 Zeichen. Damit wir im Umgang mit Strings wissen, wo das Ende in der Zeichenkette ist, werden Strings in C mit dem ASCII-Zeichen 0 abgeschlossen: ‚\0‚. D.h. im Hauptspeicher steht nicht nur „Hallo“, sondern „Hallo\0„. Bei der Initialisierung ohne die geschweiften Klammern und bei den String-Funktionen wird das Ende-Zeichen automatisch gesetzt. Das Ende-Zeichen dient nur zur Markierung, deshalb ist es bei der Ausgabe auch nicht zu sehen. Wir sprechen hierbei von sogenannten nullterminierten Strings.

Bei der Deklaration von String-Feldern sollte also auch immer an das Ende-Zeichen gedacht werden, da dieses einen zusätzlichen Platz benötigt. So ist dieses Feld komplett gefüllt:

char text[6] = "Hallo";

Weiters haben wir dadurch die Möglichkeit Strings abzuschneiden, indem wir das Ende-Zeichen manuell setzen:

char text[10] = "abcdefg";
printf("%s\n", text);
text[3] = '\0';
printf("%s\n", text);

abcdefg
abc