Menu
Coddy logo textTech

Ciągi znaków jako tablice char

Część sekcji Logika i sterowanie przepływem ścieżki C w Coddy. Lekcja 12 z 63.

W języku C nie ma wbudowanego typu danych string, który można znaleźć w innych językach programowania. Zamiast tego ciągi znaków są reprezentowane jako tablice znaków. To podstawowe pojęcie jest niezbędne do zrozumienia, jak tekst jest obsługiwany w języku C.

Ciąg znaków w C to po prostu sekwencja znaków przechowywanych w kolejnych komórkach pamięci. Aby utworzyć ciąg znaków, deklarujesz tablicę znaków wystarczająco dużą, by pomieścić wszystkie potrzebne znaki oraz jedno dodatkowe miejsce na specjalny znak kończący.

char greeting[6];  // Może pomieścić 5 znaków + znak kończący
char message[20]; // Może pomieścić maksymalnie 19 znaków + znak kończący

Najwygodniej pracować z ciągami znaków, inicjalizując je bezpośrednio za pomocą literału ciągu znaków podczas deklarowania tablicy. C automatycznie zajmuje się szczegółami przechowywania każdego znaku w tablicy:

char greeting[6] = "Hello";
// To przechowuje: 'H', 'e', 'l', 'l', 'o' oraz specjalny znak kończący

Możesz też pozwolić językowi C automatycznie określić rozmiar tablicy, pomijając specyfikację rozmiaru podczas inicjalizacji za pomocą literału łańcuchowego:

char greeting[] = "Hello";  // C automatycznie ustala rozmiar tej tablicy na 6

Zrozumienie, że ciągi znaków są tablicami znaków, jest kluczowe, ponieważ wyjaśnia, jak C obsługuje dane tekstowe, i przygotowuje Cię do pracy z funkcjami manipulującymi ciągami, które działają na tych tablicach znaków.

challenge icon

Wyzwanie

Łatwy

Napisz program w C, który demonstruje tworzenie tablic znaków i pracę z nimi w celu przechowywania ciągów znaków. Twój program powinien:

  1. Zadeklarować tablicę znaków o nazwie greeting z wystarczającą ilością miejsca na ciąg znaków "Hello" (pamiętaj o uwzględnieniu terminatora null)
  2. Zainicjalizować tablicę greeting literałem ciągu znaków "Hello"
  3. Zadeklarować drugą tablicę znaków o nazwie message z 20 elementami
  4. Zainicjalizować tablicę message literałem ciągu znaków "Welcome"
  5. Zadeklarować trzecią tablicę znaków o nazwie word bez określania rozmiaru i pozwolić językowi C automatycznie ustalić jej rozmiar poprzez zainicjalizowanie jej wartością "Programming"
  6. Wypisać wszystkie trzy ciągi znaków za pomocą printf ze specyfikatorem formatu %s
  7. Wypisać rozmiar każdej tablicy za pomocą sizeof, aby pokazać, ile pamięci zajmuje każda tablica znaków

Wynik powinien być wyświetlony w następującym formacie:

greeting: Hello
message: Welcome
word: Programming
Size of greeting: 6
Size of message: 20
Size of word: 12

To wyzwanie sprawdza, czy rozumiesz, jak deklarować tablice znaków do przechowywania ciągów znaków, jak literały ciągów znaków są automatycznie zakończone znakiem null po przypisaniu do tablic znaków oraz jak język C automatycznie oblicza rozmiary tablic, gdy podczas inicjalizacji pomijasz specyfikację rozmiaru.

Spróbuj swoich sił

#include <stdio.h>

int main() {
    // TODO: Napisz tutaj swój kod
    // Zadeklaruj i zainicjalizuj tablice znaków zgodnie z treścią zadania
    
    // Wypisz ciągi znaków i ich rozmiary
    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 iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Logika i sterowanie przepływem

Poćwicz samodzielnie: Kompilator C online