Char und String
Swipe um das Menü anzuzeigen
In C gibt es keinen eigenen Datentyp für Zeichenketten (Text). Stattdessen wird Text als Array von char gespeichert, wobei jedes Element ein einzelnes Zeichen enthält. Zum Beispiel würde der Text c<>definity als eine Folge von Zeichen in einem solchen Array gespeichert werden.
char arr[12] = {'c','<','>','d','e','f','i','n','i','t','y','\0'};
Es fällt auf, dass der Text "c<>definity" 11 Zeichen hat, das Array jedoch 12 Elemente enthält. Dieses zusätzliche Element speichert den Null-Terminierer \0, der das Ende einer Zeichenkette in C markiert.
Es handelt sich dabei nicht um die Zahl Null, sondern um ein spezielles, nicht druckbares Zeichen (ASCII-Code 0), das dem Programm das Ende der Zeichenkette anzeigt.
Das Zeichenarray sollte immer ein Element größer sein als der enthaltene Text, um Platz für den Terminierer zu bieten.
Es ist wichtig zu erkennen, dass 'x' und "x" nicht dasselbe sind.
Ein String besteht aus Zeichen. Immer daran denken, einen String mit dem Zeichen \0 abzuschließen.
'x'ist einfach eine Zeichenkonstante vom Typ char;"x"ist ein String, also ein Array von char-Werten, oder in diesem Fall {'x', '\0'}.
Nicht verwechseln: '\0', '0' und "0".
'\0' ist das Nullzeichen (ASCII 0), '0' ist die Ziffer Null (ASCII 48), und "0" ist ein String, der die Ziffer Null plus den Terminator \0 enthält.
String-Ausgabe
In C wird zum Ausgeben von Zeichenketten (Arrays von char-Werten) der %s-Platzhalter verwendet. Dieser Platzhalter weist die Funktion printf() darauf hin, welchen Typ von Information sie erwartet. Mit %s teilen wir der Funktion printf() mit, dass sie eine Zeichenkette erhält.
main.c
12345678910#include <stdio.h> int main() { char array[] = { 'c','<','>','d','e','f','i','n','i','t','y','\0' }; printf("%s\n", array); // use %s format specifiers return 0; }
Die Programmiersprache C stellt eine Standard-Bibliothek zur Zeichenkettenverarbeitung bereit, <string.h>. In dieser Bibliothek gibt es eine Funktion, die die Anzahl der Zeichen in einer Zeichenkette zählt:
main.c
123456789101112#include <stdio.h> #include <string.h> int main() { char array[] = { 'c','<','>','d','e','f','i','n','i','t','y','\0' }; printf("%d\n", strlen(array)); return 0; }
Beachte, auch ein Leerzeichen ist ein Zeichen und benötigt einen eigenen Platz im Array. Zum Beispiel: char array[10] = { 'u','s','e',' ','s','p','a','c','e','\0' }.
Durch die Verwendung eines Indexes können die Elemente der Zeichenkette angesprochen werden. Da Zeichenketten im Wesentlichen char-Arrays sind, können auch einzelne Zeichen über ihre Indizes verändert werden.
Main.c
123456789101112#include <stdio.h> int main() { char str[] = "c<>definity"; str[5] = '#'; // Change the sixth character `f` to `#` printf("%s\n", str); return 0; }
Danke für Ihr Feedback!
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen