Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Char und String | Datentypen und Variablen
C-Grundlagen

bookChar und String

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.

Dabei handelt es sich nicht um die Zahl Null, sondern um ein spezielles, nicht druckbares Zeichen (ASCII-Code 0), das dem Programm das Ende der Zeichenkette anzeigt.

Note
Hinweis

Das Zeichenarray sollte immer ein Element größer als der enthaltene Text sein, um den Terminierer aufzunehmen.

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'}.
Note
Hinweis

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 Abschluss \0 enthält.

String-Ausgabe

In C wird zur Ausgabe 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 wird der Funktion printf() mitgeteilt, dass eine Zeichenkette übergeben wird.

main.c

main.c

copy
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 befindet sich eine Funktion, die die Anzahl der Zeichen in einer Zeichenkette ermittelt:

main.c

main.c

copy
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; }
Note
Hinweis

Beachte, selbst 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 kann auf die Elemente des Strings zugegriffen werden. Da Strings im Wesentlichen char-Arrays sind, können auch einzelne Zeichen über ihre Indizes geändert werden.

Main.c

Main.c

copy
123456789101112
#include <stdio.h> int main() { char str[] = "c<>definity"; str[5] = '#'; // Change the sixth character `f` to `#` printf("%s\n", str); return 0; }
question mark

Welche der folgenden Deklarationen definiert einen String in C korrekt?

Select the correct answer

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 2. Kapitel 6

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

Awesome!

Completion rate improved to 2.63

bookChar 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.

Dabei handelt es sich nicht um die Zahl Null, sondern um ein spezielles, nicht druckbares Zeichen (ASCII-Code 0), das dem Programm das Ende der Zeichenkette anzeigt.

Note
Hinweis

Das Zeichenarray sollte immer ein Element größer als der enthaltene Text sein, um den Terminierer aufzunehmen.

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'}.
Note
Hinweis

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 Abschluss \0 enthält.

String-Ausgabe

In C wird zur Ausgabe 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 wird der Funktion printf() mitgeteilt, dass eine Zeichenkette übergeben wird.

main.c

main.c

copy
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 befindet sich eine Funktion, die die Anzahl der Zeichen in einer Zeichenkette ermittelt:

main.c

main.c

copy
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; }
Note
Hinweis

Beachte, selbst 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 kann auf die Elemente des Strings zugegriffen werden. Da Strings im Wesentlichen char-Arrays sind, können auch einzelne Zeichen über ihre Indizes geändert werden.

Main.c

Main.c

copy
123456789101112
#include <stdio.h> int main() { char str[] = "c<>definity"; str[5] = '#'; // Change the sixth character `f` to `#` printf("%s\n", str); return 0; }
question mark

Welche der folgenden Deklarationen definiert einen String in C korrekt?

Select the correct answer

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 2. Kapitel 6
some-alt