Prezentacja programu PowerPoint
Transkrypt
Prezentacja programu PowerPoint
Język ANSI C – łańcuchy Standardowe funkcje łańcuchowe cz. 1 Poniżej omówione zostaną wybrane najczęściej spotykane funkcje związane z przetwarzaniem łańcuchów (pełny zestaw w <string.h> i <stdlib.h>, opisano je też w materiale TabliceZnakowe.pdf. Funkcje te to: strlen , strcpy, strcat, strcmp, strlwr, strupr, atoi, itoa, strchr, strstr. Funkcja strlen size_t strlen(const char *s); Funkcja oblicza długość łańcucha s bez końcowego znaku ‘\0'. Przykład. Zastosowanie funkcji strlen do wyznaczania długości łańcucha. char s[10]="12345678"; int dl; dl=strlen(s);// dl będzie równe 8 Język ANSI C – łańcuchy Standardowe funkcje łańcuchowe cz. 2 Funkcja strcpy char *strcpy(char *dest, const char *src); Kopiuje łańcuch src do łańcucha dest. Kopiowanie ulega zakończeniu po skopiowaniu znaku '\0' kończącego łańcuch src. Funkcja zwraca wskaźnik dest . Przykład. #include <stdio.h> #include <string.h> int main(void) { char lan1[10="ABC"; char lan2[ ]="12345"; strcpy(lan1,lan2);// kopiowanie łańcuchów printf("%s",lan1); return 0; } Język ANSI C – łańcuchy Standardowe funkcje łańcuchowe cz. 3 Funkcja strcat char *strcat(char *dest, const char *src); Dołącza łańcuch src do końca łańcucha dest. Funkcja zwraca wskaźnik dest. Długość połączonego łańcucha jest równa strlen(dest)+strlen(src). Przykład. #include <stdio.h> #include <string.h> int main(void) { char lan1[20]="abcde"; char lan2[ ]="123456789"; strcat(lan1,lan2); printf("lan1=%s",lan1); return 0; } Język ANSI C – łańcuchy Standardowe funkcje łańcuchowe cz. 4 Funkcja strcmp int strcmp(const char *s1, const char *s2); Porównuje łańcuch s1 z łańcuchem s2, porównując kody znaków (np. kody ASCII) obu łańcuchów. Porównanie kończy się, gdy w jednym z łańcuchów zostanie napotkany znak o większym kodzie lub też zostanie osiągnięty koniec jednego z łańcuchów ( wtedy dłuższy łańcuch uważany jest za większy). Funkcja zwraca - wartość <0, gdy s1<s2, -wartość 0, gdy s1==s2, -wartość >0, gdy s1>s2. Język ANSI C – łańcuchy Standardowe funkcje łańcuchowe cz. 5 Przykład. Zastosowanie funkcji strcmp. #include <stdio.h> #include <string.h> int main(void) { char lan1[10]="abcde",lan2[10 ]; int p; printf("Podaj lancuch lan2:"); scanf("%s",lan2); p= strcmp(lan1,lan2); if (p<0) printf("\n lan1<lan2"); else printf("\n lan1=lan2"); else printf("\n lan1>lan2"); getchar(); return 0; } if ( p==0) Język ANSI C – łańcuchy Standardowe funkcje łańcuchowe cz. 6 Funkcja strlwr char *strlwr(const char *s); Zamienia w łańcuchu duże litery na małe, innych znaków nie zmienia. Przykład. Zamiana dużych liter w łańcuchu na małe. char lan1[ ]="String ABC"; strlwr(lan1); Po wykonaniu instrukcji, lan1 ulega zmianie na łańcuch "string abc". Język ANSI C – łańcuchy Standardowe funkcje łańcuchowe cz. 7 Funkcja strlupr char *strupr(char *s); Zamienia w łańcuchu małe litery na duże, innych znaków nie zmienia. Przykład. Zamiana małych liter w łańcuchu na duże. char lan2[ ]="lancuch abc"; strupr(lan2); Po wykonaniu instrukcji, lan2 ulega zmianie na łańcuch "LANCUCH ABC" . Język ANSI C – łańcuchy Standardowe funkcje łańcuchowe cz. 8 Funkcja atoi int atoi(const char *s); Funkcja atoi zamienia lańcuch będący argumentem funkcji na liczbę całkowitą, rozpoznaje ona (w zadanym porządku) - opcjonalny łąńcuch znaków tabulacji i spacji - opcjonalny znak -łąńcuch cyfr Łańcuch musi mieć następującą postać: [ws] [sn] [ddd] Pierwszy nierozpoznany znak kończy konwersję. Nadmiar nie jest rozpoznawany( wynik jest nieokreślony. Wartość zwracana atoi zwraca liczbę całkowitą odpowiadającą łańcuchowi wejściowemu. Język ANSI C – łańcuchy Standardowe funkcje łańcuchowe cz. 9 Funkcja itoa char *itoa(int value, char *string, int radix); Funkcja zamienia liczbę będącą pierwszym argumentem funkcji ( value) na łańcuch znaków umieszczany w tablicy znakowej (string) będącej drugim argumentem. Konwersja odbywa się dla podstawy systemu liczbowego podanej jako trzeci argument funkcji (radix). Podstawa systemu musi należeć do przedziału [2,36]. Jeśli liczba jest ujemna i podstawa systemu jest równa 10, pierwszym znakiem łańcucha znaków jest znak '-'. Język ANSI C – łańcuchy Standardowe funkcje łańcuchowe cz. 10 Funkcja strchr char *strchr(const char *s, int c); Funkcja wyszukuje w łańcuchu znaków s znak c. Funkcja zwraca wskaźnik do pierwszego wystąpienia znaku c. Jeśli znaku nie ma, funkcja zwraca zerowy wskaźnik null. Funkcja strstr char *strstr(const char *s1,const char *s2 ); Funkcja wyszukuje w łańcuchu znaków s1 łańcuch s2. Funkcja zwraca wskaźnik do pierwszego wystąpienia łańcucha s2 (do pierszego znaku łańcucha s2). Jeśli łańcucha s2 nie ma, funkcja zwraca zerowy wskaźnik null. Język ANSI C – łańcuchy Przykład. Wczytywanie dwuwymiarowej tablicy znaków (tablicy łańcuchów) oraz sortowanie niemalejąco. (cz.1) // cz. 1 programu #include <stdio.h> #include <conio.h> #include <string.h> int main(int argc, char* argv[]) { char stab[5][10]; char spom[10]; int i,zam; for(i=0;i<5;i++) { printf("\n lan%d :",i); scanf("%s",stab[i]); // wczytywanie tablicy znaków // będącej wierszem tablicy dwuwymiarowej } for(i=0;i<5;i++) printf("\n lan %s",stab[i]); Język ANSI C – łańcuchy Cz. 2 programu do { zam=0; for (i=0;i<4;i++) if (strcmp(stab[i],stab[i+1])>0) { strcpy(spom, stab[i]); strcpy(stab[i], stab[i+1]); strcpy( stab[i+1],spom ); zam=1; } } while (zam); printf("\n\n Tablica po sortowaniu"); for(i=0;i<5;i++) printf("\n lan %s",stab[i]); getch(); return 0;}