czwartek, 26 kwietnia 2018

Język C - Ciągi


C - Ciągi

Ciągi są w rzeczywistości jednowymiarowymi tablicami znaków zakończonymi znakiem pustym "\0". Zatem łańcuch zakończony znakiem NULL zawiera znaki, które składają się z ciągu, po którym następuje wartość pusta.
Poniższa deklaracja i inicjalizacja tworzą ciąg znaków składający się ze słowa "Hello". Aby zachować znak null na końcu tablicy, rozmiar tablicy znaków zawierającej ciąg jest o jeden większy niż liczba znaków w słowie "Hello".
char pozdrowienie[6] = {'H', 'e', 'l', 'l', 'o', '\0'};
Jeśli zastosujesz regułę inicjalizacji macierzy, możesz napisać powyższą instrukcję w następujący sposób:
char pozdrowienie[] = "Hello";

Właściwie nie umieszczasz znaku null na końcu stałej łańcuchowej. Kompilator C automatycznie umieszcza '\0' na końcu łańcucha podczas inicjowania tablicy. Spróbujmy wykonać powyższy ciąg -
#include <stdio.h>

int main () {

   char pozdrowienie[6] = {'H', 'e', 'l', 'l', 'o', '\0'};
   printf("Pozdrowienie: %s\n", pozdrowwienie );
   return 0;
}
Gdy powyższy kod zostanie skompilowany i wykonany, generuje następujący wynik:
Pozdrowienie: Hello
C obsługuje szeroki zakres funkcji, które manipulują łańcuchami zakończonymi znakiem NUL -
L.p.
Funkcja i przeznaczenie
1
strcpy (s1, s2);
Kopiuje ciąg s2 do ciągu s1.
2
strcat (s1, s2);
Łączy ciąg s2 na końcu ciągu s1.
3
strlen (s1);
Zwraca długość ciągu s1.
4
strcmp (s1, s2);
Zwraca 0, jeśli s1 i s2 są takie same; mniej niż 0, jeśli s1 <s2; większe niż 0, jeśli s1> s2.
5
strchr (s1, ch);
Zwraca wskaźnik do pierwszego wystąpienia znaku ch w ciągu s1.
6
strstr (s1, s2);
Zwraca wskaźnik do pierwszego wystąpienia ciągu s2 w ciągu s1.
Poniższy przykład wykorzystuje niektóre z wyżej wymienionych funkcji -
#include <stdio.h>
#include <string.h>

int main () {

   char ciag1[12] = "Hello";
   char ciag2[12] = "World";
   char ciag3[12];
   int  len ;

   /* skopiuj ciag1 do ciag3 */
   strcpy(str3, str1);
   printf("strcpy( ciag3, ciag1) :  %s\n", ciag3 );

   /* łączenie ciągów ciag1 i ciag2 */
   strcat( ciag1, ciag2);
   printf("strcat( ciag1, ciag2):   %s\n", ciag1 );

   /* całkowita długość ciag1 po konkatenacji */
   len = strlen(ciag1);
   printf("strlen(ciag1) :  %d\n", len );

   return 0;
}
Gdy powyższy kod zostanie skompilowany i wykonany, generuje następujący wynik:
strcpy( ciag3, ciag1) :  Hello
strcat( ciag1, ciag2):   HelloWorld
strlen(ciag1) :  10


Poprzednia strona                                                          Następna strona

Brak komentarzy:

Prześlij komentarz