C-napisy

1. Definicja

  • C-napis (ang. C-string) to tablica znaków typu char, zakończona znakiem null ('\0').
  • Dzięki znakowi końca napisu kompilator i funkcje biblioteczne wiedzą, gdzie napis się kończy.

Przykład:

albo krócej:

Kompilator automatycznie doda '\0' na końcu.


2. Różnica: char[] a std::string

  • char[] (C-napis): klasyczne podejście, używane w C i we wczesnym C++.
  • std::string: nowoczesny typ w C++, wygodniejszy, bezpieczniejszy, z metodami (.length(), .find(), .substr()).

Wciąż jednak warto znać C-napisy, bo są powszechnie używane w starszym kodzie i bibliotekach C.


3. Deklaracja i inicjalizacja

Bez znaku '\0' nie będzie to poprawny C-napis, tylko zwykła tablica znaków.


4. Odczyt i zapis znaków

Dostęp do elementów jak w tablicy:


5. Wczytywanie napisów

cin:

cin.getline:


6. Funkcje do obsługi C-napisów (<cstring>)

Biblioteka <cstring> zawiera zestaw funkcji do manipulacji C-napisami.

6.1. Funkcje do długości i kopiowania

  • strlen(s) – długość napisu (bez '\0').
  • strcpy(dest, src) – kopiuje napis src do dest.
  • strncpy(dest, src, n) – kopiuje maksymalnie n znaków.

6.2. Funkcje do konkatenacji

  • strcat(dest, src) – dokleja src do końca dest.
  • strncat(dest, src, n) – dokleja maksymalnie n znaków.

6.3. Funkcje wyszukujące

  • strchr(s, c) – zwraca wskaźnik do pierwszego wystąpienia znaku c.
  • strstr(s, pod) – zwraca wskaźnik do pierwszego wystąpienia podnapisu pod.

7. Przykład użycia


8. Typowe błędy

  • Przekroczenie rozmiaru tablicy:
  • Brak '\0' na końcu napisu.
  • Porównywanie napisów operatorem ==:

Zamiast tego: strcmp(a, b) == 0.


9. C-napisy a wskaźniki

C-napis to adres pierwszego znaku tablicy.