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;
}