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