Strings als char-Arrays
Teil des Abschnitts Logik & Ablauf 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
EinfachSchreibe ein C-Programm, das das Erstellen und Arbeiten mit Zeichenarrays zum Speichern von Zeichenketten demonstriert. Dein Programm sollte:
- Ein Zeichenarray namens
greetingmit ausreichend Platz für die Zeichenkette „Hello“ deklarieren (denke daran, das Nullterminierungszeichen zu berücksichtigen) - Das
greeting-Array mit dem Zeichenkettenliteral „Hello“ initialisieren - Ein zweites Zeichenarray namens
messagemit 20 Elementen deklarieren - Das
message-Array mit dem Zeichenkettenliteral „Welcome“ initialisieren - Ein drittes Zeichenarray namens
worddeklarieren, ohne die Größe anzugeben, und C die Größe automatisch bestimmen lassen, indem du es mit „Programming“ initialisierst - Alle drei Zeichenketten mit
printfund dem Formatspezifizierer%sausgeben - Die Größe jedes Arrays mit
sizeofausgeben, um zu zeigen, wie viel Speicher jedes Zeichenarray belegt
Deine Ausgabe sollte im folgenden Format angezeigt werden:
greeting: Hello
message: Welcome
word: Programming
Size of greeting: 6
Size of message: 20
Size of word: 12Diese Aufgabe testet dein Verständnis dafür, wie man Zeichenarrays zum Speichern von Zeichenketten deklariert, wie Zeichenkettenliterale bei der Zuweisung zu Zeichenarrays automatisch mit einem Nullterminierungszeichen versehen werden und wie C Arraygrößen automatisch berechnet, wenn du die Größenangabe bei der Initialisierung weglässt.
Probier 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 Logik & Ablauf
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Übe selbstständig: Online-C-Compiler