OPERACJE NA ŁAŃCUCHACH 133 int main(void) { char str[100]; int cmp; fputs("Podaj ciag znakow: ", stdout); fgets(str, sizeof str, stdin); if (!strncmp(str, "foo", 3)) { puts("Podany ciag zaczyna sie od ’foo’."); } return 0; } Kopiowanie napisów Do kopiowania ciągów znaków służy funkcja strcpy, 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]; strcpy(napis, "Ala ma kota."); Znacznie bezpieczniej jest używać funkcji strncpy, 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 null na koniec pierwszego napisu, dlatego zawsze trzeba to robić ręcznie: char napis[100]; strncpy(napis, "Ala ma kota.", sizeof napis - 1); napis[sizeof napis - 1] = 0; Łączenie napisów Do łączenia napisów służy funkcja strcat, która kopiuje drugi napis do pierwszego. Po- nownie jak w przypadku strcpy musimy zagwarantować, by w pierwszym łańcuchu było wy- starczająco dużo miejsca. #include #include int main(void) { char napis1[80] = "hello "; char *napis2 = "world"; strcat(napis1, napis2); puts(napis1); return 0; } I ponownie jak w przypadku strcpy istnieje funkcja strncat, która skopiuje co najwyżej tyle bajtów ile podano jako trzeci argument i dodatkowo dopisze znak null. Przykładowo powyższy kod bezpieczniej zapisać jako: #include #include
... zobacz całą notatkę
Komentarze użytkowników (0)