130 ROZDZIAŁ 18. NAPISY printf("%s", tekst); Większość funkcji działających na napisach znajduje się w pliku nagłówkowym string.h. Jeśli łańcuch jest zbyt długi, można zapisać go w kilku linijkach, ale wtedy przechodząc do następnej linii musimy na końcu postawić znak “\”. printf("Ten napis zajmuje \ więcej niż jedną linię"); Instrukcja taka wydrukuje: Ten napis zajmuje więcej niż jedną linię Możemy zauważyć, że napis, który w programie zajął więcej niż jedną linię, na ekranie zajął tylko jedną. Jest tak, ponieważ “\” informuje kompilator, że łańcuch będzie kontynu- owany w następnej linii kodu — nie ma wpływu na prezentację łańcucha. Aby wydrukować napis w kilku liniach należy wstawić do niego \n (“n” pochodzi tu od “new line”, czyli “nowa linia”). printf("Ten napis\nna ekranie\nzajmie więcej niż jedną linię."); W wyniku otrzymamy: Ten napis na ekranie zajmie więcej niż jedną linię. Jak komputer przechowuje w pamięci łańcuch? Rysunek 18.1: Napis “Merkkijono” przechowywany w pamięci Zmienna, która przechowuje łańcuch znaków, jest tak naprawdę wskaźnikiem do ciągu znaków (bajtów) w pamięci. Możemy też myśleć o napisie jako o tablicy znaków (jak wyja- śnialiśmy wcześniej, tablice to też wskaźniki). Możemy wygodnie zadeklarowaÄ napis: char *tekst = "JakiÅ tam tekst"; /* Umieszcza napis w obszarze danych programu */ /* i przypisuje adres */ char tekst[] = "JakiÅ tam tekst"; /* Umieszcza napis w tablicy */ char tekst[] = {âJâ,âaâ,âkâ,âiâ,âsâ,â â,âtâ,âaâ,âmâ,â â,âtâ,âeâ,âkâ,âsâ,âtâ,â\0â}; /* Tekst to taka tablica jak każda inna */ Kompilator automatycznie przydziela wtedy odpowiedniÄ
iloÅÄ pamiÄci (tyle bajtów, ile jest liter plus jeden dla koÅczÄ
cego nulla). JeÅli natomiast wiemy, że dany ÅaÅcuch powinien przechowywaÄ okreÅlonÄ
iloÅÄ znaków (nawet, jeÅli w deklaracji tego ÅaÅcucha podajemy mniej znaków) deklarujemy go w taki sam sposób, jak tablicÄ jednowymiarowÄ
: char tekst[80] = "Ten tekst musi byÄ krótszy niż 80 znaków";
... zobacz całą notatkę
Komentarze użytkowników (0)