Menu
Coddy logo textTech

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 enthalten

Der 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 Abschlusszeichen

Sie 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 6

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

challenge icon

Aufgabe

Einfach

Schreiben Sie ein C-Programm, das das Erstellen und Arbeiten mit Zeichen-Arrays zum Speichern von Strings demonstriert. Ihr Programm sollte:

  1. Deklarieren Sie ein Zeichen-Array namens greeting mit genügend Platz, um den String "Hello" zu speichern (denken Sie daran, den Null-Terminator zu berücksichtigen)
  2. Initialisieren Sie das greeting Array mit dem String-Literal "Hello"
  3. Deklarieren Sie ein zweites Zeichen-Array namens message mit 20 Elementen
  4. Initialisieren Sie das message Array mit dem String-Literal "Welcome"
  5. Deklarieren Sie ein drittes Zeichen-Array namens word ohne Angabe der Größe und lassen Sie C die Größe automatisch bestimmen, indem Sie es mit "Programming" initialisieren
  6. Geben Sie alle drei Strings mit printf und dem Formatbezeichner %s aus
  7. Geben Sie die Größe jedes Arrays mit sizeof aus, 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: 12

Diese 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 enthalten

Initialisierung mit einem String-Literal:

char greeting[6] = "Hello";
// Dies speichert: 'H', 'e', 'l', 'l', 'o', plus einen speziellen Terminator

C die Array-Größe automatisch bestimmen lassen:

char greeting[] = "Hello";  // C macht die Größe automatisch 6

Strings 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ück

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;
}
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Logic & Flow