strcat |
Dokleja kopię łańcucha podanego w drugim parametrze do łańcucha podanego w pierwszym parametrze. Długość otrzymanego łańcucha jest sumą długości obu parametrów. |
Składnia: | char *strcat(char *str1, const char *str2); |
gdzie: | str1 - łańcuch, do którego dołączamy (musi być zmienną) str2 - dołączany łańcuch (zmienna lub stała) |
Zwracana wartość: | wskaźnik do złączonego łańcucha |
strchr |
Wyszukuje pierwszego wystąpienia podanego znaku w łańcuchu. Znak końca łańcucha (NULL) jest również sprawdzany. |
Składnia: | char *strchr(const char *str, int znak); |
gdzie: | str - łańcuch, w którym szukamy znaku znak - poszukiwany znak |
Zwracana wartość: | gdy znak został znaleziony - wskaźnik do znaku, w przeciwnym razie NULL |
Własna implementacja funkcji: |
char *strchr(char *str, int znak)
{ while( str != '\0' )
{ if ( str == znak ) return str;
str = str + 1;
}
return NULL;
}
|
strcmp |
Porównuje 2 łańcuchy znaków. Porównywane są kolejno wszystkie odpowiadające sobie znaki w obu łańcuchach. |
Składnia: | int strcmp(const char *str1, const char*str2); |
gdzie: | str1 - pierwszy porównywany łańcuch str2 - drugi porównywany łańcuch (zmienna lub stała) |
Zwracana wartość: | wartość < 0, gdy str1 < str2 wartość == 0, gdy str1 == str2 wartość > 0, gdy str1 > str2 |
Własna implementacja funkcji: |
int strcmp(char *str1, char *str2)
{ while( *str1 == *str2 )
{ if ( *str1 == '\0' ) return 0;
str1 = str1 + 1;
str2 = str2 + 1 ;
}
return (*str1 - *str2);
}
|
strcmpi |
Porównuje 2 łańcuchy znaków bez odróżniania wielkości liter. Porównywane są kolejno wszystkie odpowiadające sobie znaki w obu łańcuchach. |
Składnia: | int strcmpi(const char *str1, const char*str2); |
gdzie: | str1 - pierwszy porównywany łańcuch (zmienna lub stała) str2 - drugi porównywany łańcuch (zmienna lub stała) |
Zwracana wartość: | wartość < 0, gdy str1 < str2 wartość == 0, gdy str1 == str2 wartość > 0, gdy str1 > str2 |
strcpy |
Kopiuje drugi łańcuch do pierwszego, łącznie z końcowym znakiem NULL |
Składnia: | char *strcpy(char *str1, const char *str2); |
gdzie: | str1 - łańcuch, do którego kopiujemy (musi być zmienną) str2 - łańcuch, który kopiujemy (zmienna lub stała) |
Zwracana wartość: | wskaźnik do str1 |
Własna implementacja funkcji: |
char * strcpy(char *str1, char *str2)
{ char *pocz = str1;
while( ( *str1 = *str2 ) != '\0' )
{ str1++;
str2++;
}
return pocz;
}
|
strcspn |
Funkcja lokalizuje w parametrze str1 pierwsze wystąpienie znaku (oprócz NULL) należącego do str2 |
Składnia: | size_t strcspn(const char *str1, const char *str2); |
gdzie: | str1 - łańcuch, w którym szukamy któregoś ze znaków znajdujących się str2 str2 - łańcuch zawierający zbiór znaków, z których chcemy wyszukać którykolwiek w str1 |
Zwracana wartość: | jeżeli zostanie znaleziony którykolwiek znak z str2 w str1, to funkcja zwraca jego indeks w łańcuchu str1, w przeciwnym razie zwracana jest długość łańcucha str1 |
strerror |
Zwraca wskaźnik do komunikatu błędu o podanym numerze. |
Składnia: | char *strerror(int nr_błędu); |
gdzie: | nr_błędu - numer błędu, dla którego chcemy pobrać komunikat |
Zwracana wartość: | wskaźnik do miejsca pamięci, gdzie zapisany jest komunikat błędu o podanym w parametrze numerze. |
strlen |
Oblicza i zwraca ilość znaków w łańcuchu bez końcowego znaku NULL. |
Składnia: | size_t strlen(const char *str); |
gdzie: | str - łańcuch, którego długość chcemy ustalić |
Zwracana wartość: | ilość znaków w łańcuchu bez końcowego znaku NULL. |
Własna implementacja funkcji: |
char *strchr(char *str)
{ size_t n = 0;
while( str != '\0' )
{ n++;
str=str+1;
}
return n;
}
|
strncat |
Dołącza część jednego łańcucha znaków do drugiego. Dołączanych jest max pierwszych znaków z str2 do str1 lub cały łańcuch str2, jeżeli jego długość jest mniejsza od max |
Składnia: | char *strncat(char *str1, const char *str2, size_t max); |
gdzie: | str1 - łańcuch, do którego dołączamy (musi być zmienną) str2 - dołączany łańcuch max - maksymalna ilość dołączanych znaków |
Zwracana wartość: | wskaźnik do str1. |
strncpy |
Kopiuje część jednego łańcucha znaków do drugiego. Kopiowanych jest max pierwszych znaków z str2 do str1 lub cały łańcuch str2, jeżeli jego długość jest mniejsza od max |
Składnia: | char *strncpy(char *str1, const char *str2, size_t max); |
gdzie: | str1 - łańcuch, do którego dołączamy (musi być zmienną) str2 - dołączany łańcuch max - maksymalna ilość dołączanych znaków |
Zwracana wartość: | wskaźnik do str1. |
strpbrk |
Poszukuje w łańcuchu str1 pierwszego wystąpienia dowolnego znaku należącego do łańcucha str2 (oprócz końcowego NULL). |
Składnia: | char *strpbrk(const char *str1, const char *str2); |
gdzie: | str1 - łańcuch, który przeszukujemy str2 - ciąg zawierający lokalizowane znaki |
Zwracana wartość: | wskaźnik do pierwszego wystąpienia w str1 któregokolwiek ze znaków z str2 lub NULL, jeżeli oba łańcuchy nie mają ani 1 wspólnego znaku. |
strrchr |
Wyszukuje ostatniego wystąpienia podanego znaku w łańcuchu. Znak końca łańcucha (NULL) jest również sprawdzany. |
Składnia: | char *strrchr(const char *str, int znak); |
gdzie: | str - łańcuch, w którym szukamy znaku znak - poszukiwany znak |
Zwracana wartość: | gdy znak został znaleziony - wskaźnik do znaku, w przeciwnym razie NULL |
strspn |
Funkcja lokalizuje w parametrze str1 pierwsze wystąpienie znaku (oprócz NULL) NIE należącego do str2 |
Składnia: | size_t strcspn(const char *str1, const char *str2); |
gdzie: | str1 - łańcuch, w którym szukamy znaków NIE znajdujących się w str2 str2 - łańcuch opisujący ciąg znaków |
Zwracana wartość: | indeks pierwszego znaku w str1, który nie należy do str2 lub długość łańcucha str1 |
strstr |
Poszukuje w łańcuchu str1 pierwszego wystąpienia łańcucha str2. |
Składnia: | char *strstr(const char *str1, const char *str2); |
gdzie: | str1 - łańcuch, który przeszukujemy str2 - poszukiwany łańcuch |
Zwracana wartość: | wskaźnik do pierwszego wystąpienia w str1 łańcucha str2 lub NULL, jeżeli nie str2 nie został znaleziony w str1. |
strtok |
Wyodrębnia z łańcuchu str1 podciągi (tokeny) ograniczone którymś ze znaków podanych w str2. Łańcuch str2 może być inny przy każdym wywołaniu funkcji z tym samym łańcuchem str1. Wywołanie funkcji zwraca wskaźnik do pierwszego znaku znalezionego podciągu (tokena) i zapisuje znak NULL na znaku kończącym token (należącym do str2). |
Składnia: | char *strtok(char *str1, const char *str2); |
gdzie: | str1 - łańcuch, który przeszukujemy str2 - lista znaków rozdzielających tokeny |
Zwracana wartość: | wskaźnik do wyodrębnionego w str1 podciągu, jeżeli taki wystąpił lub NULL, jeżeli w str1 nie ma żadnego podciągu (tokena). |
Przykładowy program operujący na łańcuchach znaków za pomocą funkcji:
#include <stdio.h>
#include <string.h>
#include <conio.h>
void main(void)
{ char *str1 = "Programowanie";
char *str3 = " w C++";
char str2[50];
char znak;
clrscr();
// wyświetlanie fragmentów łańcucha znaków
printf("Pełny napis : %s\n", str1);
printf("Pominięty znak 0 : %s\n", (str1 + 1));
printf("Pominięte 4 znaki : %s\n", (str1 + 4));
printf("Pominięte 7 znaków: %s\n\n", (str1 + 7));
getch();
// kopiowanie określonej ilości znaków z łańcucha do innej zmiennej
strncpy(str2 , str1 , 5);
printf("str2 po skopiowaniu 5 znaków z str1 : %s\n" , str2);
getch();
// kopiowanie łańcucha znaków do innej zmiennej
stpcpy(str2 , str1);
printf("Skopiowanie str1 do str2 : %s\n" , str2);
getch();
// sklejanie łańcuchów znaków
strcat(str2 , str3);
printf("%s\n" , str2);
strcat(str2 , " to jest TO");
printf("Sklaejone napisy : %s\n" , str2);
getch();
// sprawdzenie długości łańcucha znaków
printf("Długość str1 = %d\n", strlen(str1));
printf("Długość str2 = %d\n\n", strlen(str2));
getch();
// wyszukiwanie znaku w łańcuchu znaków
printf("Podaj szukany znak: ");
znak=getche();
if (strchr(str1 , znak) == NULL)
printf("\nZnak \"%c\" nie występuje w napisie\n");
else
printf("\nZnak \"%c\" występuje na pozycji: %i\n", znak, strchr(str1 , znak));
getch();
// dokładne porównywanie łańcuchów znaków
printf("\nProgramowanie == Programowanie ==> %d", strcmp(str1 , "Programowanie"));
printf("\nProgramowanie == programowanie ==> %d", strcmp(str1 , "programowanie"));
printf("\nProgramowanie == PROGRAMOWANIE ==> %d", strcmp(str1 , "PROGRAMOWANIE"));
getch();
// porównywanie łańcuchów znaków bez odróżniania wielkości liter
printf("\n\nProgramowanie == Programowanie ==> %d", strcmpi(str1 , "Programowanie"));
printf("\nProgramowanie == programowanie ==> %d", strcmpi(str1 , "programowanie"));
printf("\nProgramowanie == PROGRAMOWANIE ==> %d", strcmpi(str1 , "PROGRAMOWANIE"));
getch();
// konwersja wielkości liter
printf("\n\nWielkie litery : %s" , strlwr(str1));
printf("\nNałe litery : %s" , strupr(str1));
getch();
}
|