include
Transkrypt
include
/* Przykladowe programy związane z użyciem funkcji lancuchowych */ #include<stdio.h> #include<conio.h> #include <string.h> #include <ctype.h> /* Program sprawdzający poprawność identyfikatora. Identyfikator jest poprawny, jeśli pierwszy znak jest literą lub znakiem podkreślenia '_' ,a kolejne znaki są literami lub cyframi*/ int main(int argc, char* argv[]) { char identifier[10]="name"; char *tablan[5]; unsigned int i; for (i=0;i<argc;i++) printf("\n argument nr %d=%s",i,argv[i]); getch(); while (1) { clrscr(); fflush(stdin); printf("\n Podaj identyfikator:"); gets(identifier); if (!isalpha(identifier[0])&&identifier[0]!='_') { puts(" Identyfikator niepoprawny"); getch(); exit(1); } for (i=1;i<strlen(identifier);i++) if (!isalnum(identifier[i])&&identifier[i]!='_') { puts(" Identyfikator niepoprawny"); getch(); exit(1); } puts("Identyfikator poprawny"); getch(); } return 0; } //-----------------------------------------------------------/*Wyszukiwanie znaku w tablicy znakowej z zastosowaniem funkcji strchr*/ #include<stdio.h> #include<conio.h> #include <string.h> #include <ctype.h> int main(int argc, char* argv[]) { char s[20]="__abbbaccafbbbfnnf"; char *ps1,*ps2; int i,licznik; //Wyszukiwanie pierwszego wystapienia 'a' w s ps1=s; ps1=strchr(ps1,'a'); if (ps1!=NULL) { printf("\n Znak %c jest na pozycji %d",'a',ps1-s); /* ps1-s jest odejmowaniem wskaznikow, wynikiem jest ilosc elementow typu wskazywanego przez wskaznik,polozonych pomiedzy miejscamiwskazywanymi przez wskazniki ps1 i s */ /* Wyszukiwanie drugiego wystapienia 'a' w s Wskaznik bedacy pierwszym argumentem strchr,wskazuje na nastepna pozycje za znalezionym wystapieniem znaku 'a'*/ ps1=strchr(ps1+1,'a'); if (ps1!=NULL) printf("\n Drugi znak %c jest na pozycji %d",'a',ps1-s); else printf("\n Brak drugiego wystapienia %c ",'a'); getch(); } licznik=0; ps1=s; while(ps1) { ps1=strchr(ps1,'f'); if (ps1==NULL&&!licznik) printf("\n Znak %c nie wystepuje w s",'f'); else if (ps1==NULL&&licznik) printf("\n Brak kolejnych wystapien %c w s",'f'); else { printf("\n Znak %c jest na pozycji %d",'f',ps1++-s); licznik++; } } getch(); return 0; } /*Wyszukiwanie lancuchow w lancuchu (tablicy znakowej) z zastosowaniem funkcji strstr*/ #include<stdio.h> #include<conio.h> #include <string.h> #include <ctype.h> #pragma argsused int main(int argc, char* argv[]){ char s[50]="__aabbbaaccaacc_____cc__cc_cc"; char lan[3]="cc"; //lancuch poszukiwany char *ps1,*ps2; int i,sig=0; /*Sprawdzanie pierwszego i drugiego wystapienia lancucha lan w lancuchu s.*/ printf(" Wyszukiwanie pierwszych dwoch wystapien lan w s\n"); ps1=strstr(s,lan); if (ps1) /*jezeli lancuch s zawiera lancuch lan, to zwracany jest wskaznik do pierwszego znaku pierwszego wystapienia lancucha lan w lancuchu s*/ { printf("\n Lancuch %s jest na pozycji %d",lan,ps1-s); //--------------------------------------------------------------ps1=strstr(ps1+strlen(lan),lan); if (ps1) printf("\n 2-gie wystapienie lancucha %s na pozycji %d",lan,ps1s); else printf("\n Brak 2-giego wystapienia lancucha %s w s", lan); } else printf("\n Lancuch %s nie wystepuje w s", lan); getch(); //---------------------------------------------------------------// Sprawdzanie wszystkich wystapien lancucha lan w lancuchu s ps1=s; sig=0; printf("\n\n\n Wyszukiwanie wszystkich wystapien lan w s\n"); while(ps1) { ps1=strstr(ps1,lan); sig=1; if (ps1) { printf("\n Lancuch %s znajduje sie na pozycji %d",lan,ps1-s); ps1=ps1+strlen(lan); } } if (!sig) printf("\n Lancuch %s nie wystepuje w s",lan); getch(); return 0; }