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 napissrcdodest.strncpy(dest, src, n)– kopiuje maksymalnienznaków.
6.2. Funkcje do konkatenacji
strcat(dest, src)– doklejasrcdo końcadest.strncat(dest, src, n)– dokleja maksymalnienznaków.
6.3. Funkcje wyszukujące
strchr(s, c)– zwraca wskaźnik do pierwszego wystąpienia znakuc.strstr(s, pod)– zwraca wskaźnik do pierwszego wystąpienia podnapisupod.
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.