130
printf("Xs", 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 “\".
printfCTen napis zajauje \ 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 l>ę<lzie kontynuowany 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 linę”, czyli “nowa linia”).
printf("Ten napis\nna ekranie\nzajnie więcej niż jedną linię.");
W wyniku otrzymamy:
Ten napis na ekranie
zajmie więcej niż jedną linię.
0 |
1 |
2 |
3 |
4 |
5 |
« 7 |
8 |
9 |
10 |
M |
c |
r |
k |
k |
i |
i o |
n |
0 |
» |
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 zadeklarowiić napis:
char *tekst • "Jakiś tam tekst"; /• Umieszcza napis w obszarze danych programu •/
/• i przypisuje adres •/
char tekstf] = "Jakiś tam tekst"; /• Umieszcza napis w tablicy •/ char tekst(] - {'J\’ał,’k\'i’,'s**.*t,.,e,»,k,,,sVt»,»\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ść ziutkó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";