133
OPERACJE NA ŁAŃCUCHACH
int main(void) { char str[100]; int cmp;
fputs("Podaj ciąg znaków: ", stdout); fgets(str, sizeof str, stdin);
if (!3trncmp(8tr, "foo", 3)) {
putsCPodany ciąg zaczyna sie od ’foo'.");
>
return 0;
Do kopiowania ciągów znaków służy funkcja stropy, która kopiuje drugi napis w miejsce pierwszego. Musimy pamiętać, by w pierwszym łańcuchu było wystarczająco dużo miejsca.
char napis[100]; strcpyfnapis, "Ala ma kota.");
Znacznie bezpieczniej jest używać funkcji stmcpy, która kopiuje co najwyżej tyle bajtów ile podano jako trzeci parametr. Uwaga! Jeżeli drugi napis jest za długi funkcja nie kopiuje znaku nuli na koniec pierwszego napisu, dlatego zawsze trzelta to robić ręcznie:
char napis[100];
strncpyfnapis, "Ala ma kota.", sizeof napis - 1); napis [sizeof napis - 1] - 0;
Do łączmia napisów służy funkcja streat, która kopiuje drugi napis do pierwszego. Po iiownie jak w przypadku strepy musimy zagwarantować, by w pierwszym łańcuchu było wystarczająco dużo miejsca.
iinclude <stdio.h>
Sinclude <string.h>
int main(void) { char napisl[80] ■ "hello "; char *napis2 ■ "world"; streat(napisl, napis2); puts(napisl); return 0;
I ponownie jak w przypadku strepy istnieje funkcja strncat, która skopiuje co najwyżej tyle bajtów ile podano jako trzeci argument i dodatkowo dopisze znak nuli. Przykładowo powyższy kol ł>ezpieczniej zapisać jako:
•include <stdio.h> sinclude <string.h>