Rozdział 18 Napisy W dzisiejszych czasach komputer przestał być narzędziem tylko i wyłącznie do przetwa- rzania danych. Od programów komputerowych zaczęto wymagać czegoś nowego — program w wyniku swojego działania nie ma zwracać danych, rozumianych tylko przez autora progra- mu, lecz powinien być na tyle komunikatywny, aby przeciętny użytkownik komputera mógł bez problemu tenże komputer obsłużyć. Do przechowywania tychże komunikatów służą tzw. “łańcuchy” (ang. string) czyli ciągi znaków. Język C nie jest wygodnym narzędziem do manipulacji napisami. Jak się wkrótce prze- konamy, zestaw funkcji umożliwiających operacje na napisach w bibliotece standardowej C jest raczej skromny. Dodatkowo, problemem jest sposób, w jaki łańcuchy przechowywane są w pamięci. Napisy w języku C mogą być przyczyną wielu trudnych do wykrycia błędów w progra- mach. Warto dobrze zrozumieć, jak należy operować na łańcuchach znaków i zachować szcze- gólną ostrożność w tych miejscach, gdzie napisów używamy. Łańcuchy znaków w języku C Napis jest zapisywany w kodzie programu jako ciąg znaków zawarty pomiędzy dwoma cudzysłowami. printf ("Napis w języku C"); W pamięci taki łańcuch jest następującym po sobie ciągiem znaków (char), który kończy się znakiem “null” (czyli po prostu liczbą zero), zapisywanym jako ’\0’. Jeśli mamy napis, do poszczególnych znaków odwołujemy się jak w tablicy: char *tekst = "Jakiś tam tekst"; printf("%c\n", "przykład"[0]); /* wypisze p - znaki w napisach są numerowane od zera */ printf("%c\n", tekst[2]); /* wypisze k */ Ponieważ napis w pamięci kończy się zerem umieszczonym tuż za jego zawartością, odwołanie się do znaku o indeksie równym długości napisu zwróci zero: printf("%d", "test"[4]); /* wypisze 0 */ Napisy możemy wczytywać z klawiatury i wypisywać na ekran przy pomocy dobrze zna- nych funkcji scanf, printf i pokrewnych. Formatem używanym dla napisów jest %s. 129
... zobacz całą notatkę
Komentarze użytkowników (0)