Strings als char-Arrays
Teil des Abschnitts Logic & Flow der C-Journey von Coddy — Lektion 12 von 63.
In C gibt es keinen eingebauten String-Datentyp, wie man ihn in anderen Programmiersprachen finden könnte. Stattdessen werden Strings als Arrays von Zeichen dargestellt. Dieses grundlegende Konzept ist essenziell, um zu verstehen, wie Text in der C-Programmierung verarbeitet wird.
Ein String in C ist einfach eine Folge von Zeichen, die an aufeinanderfolgenden Speicherplätzen gespeichert werden. Um einen String zu erstellen, deklarieren Sie ein Zeichen-Array, das groß genug ist, um alle benötigten Zeichen aufzunehmen, plus einen zusätzlichen Platz für ein spezielles Abschlusszeichen.
char greeting[6]; // Kann 5 Zeichen + Terminator enthalten
char message[20]; // Kann bis zu 19 Zeichen + Terminator enthaltenDer bequemste Weg, mit Strings zu arbeiten, besteht darin, sie direkt mit einem String-Literal zu initialisieren, wenn Sie das Array deklarieren. C kümmert sich automatisch um die Details der Speicherung jedes Zeichens im Array:
char greeting[6] = "Hello";
// Dies speichert: 'H', 'e', 'l', 'l', 'o', plus ein spezielles AbschlusszeichenSie können C auch die Array-Größe automatisch bestimmen lassen, indem Sie die Größenangabe bei der Initialisierung mit einem String-Literal weglassen:
char greeting[] = "Hello"; // C setzt die Größe hierfür automatisch auf 6Zu verstehen, dass Strings Zeichen-Arrays sind, ist entscheidend, da es erklärt, wie C Textdaten verarbeitet und Sie auf die Arbeit mit Funktionen zur String-Manipulation vorbereitet, die auf diesen Zeichen-Arrays operieren.
Aufgabe
EinfachSchreiben Sie ein C-Programm, das das Erstellen und Arbeiten mit Zeichen-Arrays zum Speichern von Strings demonstriert. Ihr Programm sollte:
- Deklarieren Sie ein Zeichen-Array namens
greetingmit genügend Platz, um den String "Hello" zu speichern (denken Sie daran, den Null-Terminator zu berücksichtigen) - Initialisieren Sie das
greetingArray mit dem String-Literal "Hello" - Deklarieren Sie ein zweites Zeichen-Array namens
messagemit 20 Elementen - Initialisieren Sie das
messageArray mit dem String-Literal "Welcome" - Deklarieren Sie ein drittes Zeichen-Array namens
wordohne Angabe der Größe und lassen Sie C die Größe automatisch bestimmen, indem Sie es mit "Programming" initialisieren - Geben Sie alle drei Strings mit
printfund dem Formatbezeichner%saus - Geben Sie die Größe jedes Arrays mit
sizeofaus, um zu demonstrieren, wie viel Speicher jedes Zeichen-Array belegt
Ihre Ausgabe sollte die Ergebnisse im folgenden Format anzeigen:
greeting: Hello
message: Welcome
word: Programming
Size of greeting: 6
Size of message: 20
Size of word: 12Diese Herausforderung testet Ihr Verständnis dafür, wie man Zeichen-Arrays zum Speichern von Strings deklariert, wie String-Literale beim Zuweisen zu Zeichen-Arrays automatisch null-terminiert werden und wie C Array-Größen automatisch berechnet, wenn Sie die Größenangabe bei der Initialisierung weglassen.
Spickzettel
In C werden Strings als Arrays von Zeichen (Arrays of Characters) dargestellt. Es gibt keinen eingebauten String-Datentyp.
Deklarieren Sie ein Zeichen-Array mit einer bestimmten Größe:
char greeting[6]; // Kann 5 Zeichen + Terminator enthalten
char message[20]; // Kann bis zu 19 Zeichen + Terminator enthaltenInitialisierung mit einem String-Literal:
char greeting[6] = "Hello";
// Dies speichert: 'H', 'e', 'l', 'l', 'o', plus einen speziellen TerminatorC die Array-Größe automatisch bestimmen lassen:
char greeting[] = "Hello"; // C macht die Größe automatisch 6Strings mit dem Formatbezeichner %s ausgeben:
printf("%s", greeting);Die Array-Größe mit sizeof ermitteln:
sizeof(greeting) // Gibt die vom Array belegten Gesamt-Bytes zurückProbier es selbst
#include <stdio.h>
int main() {
// TODO: Schreiben Sie Ihren Code hier
// Deklarieren und initialisieren Sie die Zeichen-Arrays wie in der Aufgabe angegeben
// Geben Sie die Zeichenfolgen und ihre Größen aus
printf("greeting: %s\n", greeting);
printf("message: %s\n", message);
printf("word: %s\n", word);
printf("Size of greeting: %lu\n", sizeof(greeting));
printf("Size of message: %lu\n", sizeof(message));
printf("Size of word: %lu\n", sizeof(word));
return 0;
}Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Logic & Flow
1Zeiger-Grundlagen
Was ist ein Zeiger?Zeiger deklarierenDer Adressoperator (&)Der Dereferenzierungsoperator (*)NULL-ZeigerZusammenfassung: Zeiger-Grundlagen4Projekt: Einfaches Text-Tool
ProjektübersichtZeichen zählen2Pointer und Arrays
Array-Namen als PointerArray-Elemente - PointerPointer-ArithmetikPointer vergleichenWiederholung: Array-Durchlauf mit Pointern5Zeiger und Funktionen
Wertübergabe (Pass-by-Value)Zeiger an Funktionen übergebenVariablen über Zeiger ändernEin klassisches Beispiel: SwapArrays an Funktionen übergebenZusammenfassung: Zeiger als Funktionsargumente8Structs und Zeiger
Zeiger auf StructsDer Pfeiloperator (->)Structs per Wert übergebenÜbergabe von Struct-ZeigernDynamische Allokation von StructsZusammenfassung: Struct ändern - Ptr11Finale Wiederholungsaufgaben
Wiederholung: Dynamische String-KonkatenationWiederholung: Array von StructsWiederholung: Wortfrequenz-Zähler3Character-Arrays und Strings
Strings als char-ArraysDer Null-TerminatorString-Eingabe mit scanfVerwendung von strlen()Verwendung von strcpy()Verwendung von strcat()Verwendung von strcmp()Zusammenfassung: Grundlegende String-Funktionen