|
Dintre acestea,cea mai importanta este wait(),restul nu fac obiectul
|
səhifə | 48/55 | tarix | 07.05.2018 | ölçüsü | 4,6 Mb. | | #50260 |
| Dintre acestea,cea mai importanta este wait(),restul nu fac obiectul
acestui manual.
FUNCTIA wait()
-asteapta pana la terminarea unui proces copil
SINTAXA GENERALA este: int wait(int *statloc);
Functia asteapta terminarea unuia sau mai multor procese copil.Functia se
poate aplica doar pentru procesele copil derivate din programul apelant,
nu si pentru cele derivate din procesele copil(procese nepot ramificate cu
spawnle din procesul copil).Daca *statloc nu este NULL,indica adresa la
care se va transfera statusul de terminare a procesului.
Daca procesul copil se termina normal( cu apel de exit() sau revenire in
functia main() ),atunci statusul de terminare a procesului va fi definit
dupa cum urmeaza:
Bitul 0-7 Zero
Bitul 8-15 Byte-ul cel mai putin semnificativ din codul returnat
de procesul copil.
Daca procesul copil nu returneaza nici o valoare,valoarea pentru *statloc
este impredictibila.Daca procesul copil retruneaza eroare,valorile sunt:
Bitul 0-7 1=eroare critica 2=eroare de executie 3=semnal extern
Bitul 0-15 Zero
Functia nu returneaza valori (nu este depanabila automat).
-364- [ ctype.h - isalnum() ]
EXEMPLU: [C++]
#include
#include
#include
#include
main()
{ int result;
result=spawnlp(P_NOWAIT,"C:\BC5\BIN\td.exe","td.exe",NULL);
if (result==-1)
{
perror("Error from spawnlp=");
};
wait(0);
int x;
for (x=1;x<11;x++)
{ printf("x= %d \n",x);
sleep(1);
}}
Pentru a sesiza difernta,rulati exercitiul si dupa eliminarea comenzii
wait(0) si observati ca programul din main() se deruleaza in timp ce
inchideti fereastra utilitarului Turbo Debugger (td.exe).
BIBLIOTECA C fila antet
-contine functii care sunt utilizate mai ales pentru clasificarea tipuri-
lor de caractere,pentru construirea unor macro-uri de conversie a datelor
sau pentru analiza datelor.
FUNCTIA isalnum()
-testeaza daca un caracter este alfanumeric (alfabetic sau digital)
SINTAXA GENERALA este: int isalnum(int c);
Functia este de fapt un macro,care clasifica toate caracterele ASCII prin
codul lor numeric.In versiunea C++,valoarea poate fi influentata de
categoria din LC_TYPE (structura lconv din locale.h).Pentru valorile
implicite,caracterele alfanumerice sunt fie caractere alfabetice (de la
A la Z si de la a la z) fie caractere numerice digitale (de la 0 la 9 ).
Functia returneaza nonzero pentru caracterele alfanumerice sau zero pentru
restul caracterelor.
EXEMPLU: #include
#include
#include
int x,val;
main()
{ for (x=50;x<70;x++)
{ val=isalnum(x);
if (val==0)
printf("%d=%c si NU este un caracter alfanumeric!\n",x,x);
else
printf("%d=%c si ESTE alfanumeric ! \n",x,x);
};
sleep(5); }
Functia poate numara caracterele dintr-o fila de tip text,etc.
-365- [ ctype.h -isalpha() si isascii() ]
FUNCTIA isalpha()
-determina daca un caracter este alfabetic
SINTAXA GENERALA este: int isalpha(int c);
Functia este similara cu isalnum(),dar nu recunoaste decat caracterele
alfabetice (A-Z si a-z).Clasificarea caracterelor se face in fucntie de
codul lor numeric ASCII.Poate fi influentata de categoria locale LC_CTYPE.
Functia returneaza nonzero pentru caracterele alfabetice.
EXEMPLU: #include
#include
int x,val,nr;
main()
{ for (x=1;x<6;x++)
{ printf("Introduceti un numar intre 1 si 255: \n");
scanf("%d",&nr);
val=isalpha(nr);
if (val==0)
printf("%d=%c NU este un caracter alfabetic! \n",nr,nr);
else
printf("%d=%c si este o litera din alfabet ! \n",nr,nr);
};
printf(" ...Apasati orice tasta...\n");
getch();
}
FUNCTIA isascii()
-este un macro de clasificare a caracterelor ASCII
SINTAXA GENERALA este: int isascii(int c);
Functia identifica primele 128 de caractere din setul de caractere ASCII
(cele care au bitul binar cel mai nesemnificativ egal cu zero) fata de
caracterele speciale (cele cu cod numeric 128-255 si primul bit binar=1).
Functia returneaza nonzero pentru caracterele 0-127 ( 0x00 la 0x7F )
EXEMPLU: #include
#include
int a,b,c,val;
main()
{ a=77,b=303,c=210;
val=isascii(a);
valoare();
val=isascii(b);
valoare();
val=isascii(c);
valoare();
printf(" ...Apasati orice tasta... \n");
getch();
}
valoare()
{ if (val==0)
printf("Caracterul NU ESTE un caracter ASCII 1 ! \n");
else
printf("Caracterul este ASCII 1 ! \n");
}
-366- [ ctype.h -iscntrl() si isdigit() ]
FUNCTIA iscntrl()
-verifica daca este un caracter de control (0-31)
SINTAXA GENERALA este: int iscntrl(int c);
Caracterele de control sunt coduri ASCII utilizate pentru controlul
operatiilor de editare.Sunt primele 32 de coduri ASCII si determina
diferite operatii.Se utilizeaza pentru controlul editarii si pentru
rutine scrise in cod masina.Nu se recomanda utilizarea lor de catre
incepatori (pot altera sau chiar sterge datele).
Functia este un macro si verifica daca un carcater oarecare este sau nu
un caracter de control (cu cod numeric ASCII 0-31) sau carcaterul delete.
Caracterele de control au adresa hex 0x00-0x7F si respectiv 0x1F=delete).
Functia returneaza nonzero pentru delete si caracterele de control.
EXEMPLU: #include
#include
#include
int x,val;
main()
{ printf("Introduceti valoarea lui x (0-255); \n");
printf("Caractere de control= 0-31 sau 127 \n");
scanf("%d",&x);
printf("%x \n",x);
val=iscntrl(x);
if (val==0)
printf("%d=%c si NU ESTE un caracter de control ! \n",x,x);
else
printf("%d=%c si ESTE caracter de control ! \n",x,x);
sleep(3);
}
FUNCTIA isdigit()
-determina daca un carcater este digital (numar 0-9 cod ASCII 48-57)
SINTAXA GENERALA este: int isdigit(int c);
Functia este de fapt un macro si determina daca un caracter oarecare este
sau nu este digital (numar reprezentabil digital,adica un numar cuprins
intre 0 si 9.Numerele mai mari necesita mai multi digiti :Exemplu: 777
poate fi reprezentat pe 3 digiti).
Functia returneaza nonzero pentru numerele de la 0 la 9 (digitale).
EXEMPLU: #include
#include
#include
int x,val;
main()
{ for (x=44;x<66;x++)
{ val=isdigit(x);
if (val==0)
printf("%d=%c si NU ESTE un caracter digital !\n",x,x);
else
printf("%d=%c si ESTE un caracter digital (0-9)!\n",x,x);
};
sleep(5); }
Exemplul clasic pentru digiti sunt numerele afisate de ceasul de mana!
-367- [ ctype.h -isgraph() si islower() ]
FUNCTIA isgraph()
-determina daca un caracter este caracter grafic
SINTAXA GENERALA este: int isgraph(int c);
Functia este fapt un macro si identifica daca un caracter este sau nu
este grafic,cu exceptia caracterului blank space(spatiul gol).
Functia returneaza nonzero daca este caracter grafic.
EXEMPLU: #include
#include
#include
int a,val;
main()
{ a=' ';
val=isgraph(a);
valoare();
a=255;
val=isgraph(a);
valoare();
a=100;
val=isgraph(a);
valoare();
sleep(3);
}
valoare()
{ if (val==0)
printf("NU este un caracter grafic ! \n");
else
printf("caracterul ESTE grafic ! \n");
}
FUNCTIA islower()
-determina caracterele alfabetice scrise cu minuscula(litera mica)
SINTAXA GENERALA este: int islower(int c);
Functia este un macro si identifica intr-un text caracterele scrise cu
minuscula (fata de cele scrise cu majuscula).Se aplica pentru literele
de la a la z.(restul caracterelor returneaza zero)
Functia returneaza nonzero daca litera este minuscula(litera mica)
EXEMPLU: #include
#include
#include
char x;
int z;
main()
{ printf("Introduceti o litera din alfabet: \n");
x=getch();
printf("%c \n",x);
z=islower(x);
if (z==0)
printf("Litera este scrisa cu majuscula ! \n");
else
printf("Este o litera mica ! \n");
sleep(3); }
-368- [ ctype.h-isprint() si ispunct() ]
FUNCTIA isprint()
-determina daca este un caracter imprimabil
SINTAXA GENERALA este: int isprint(int c);
Functia este un macro care utilizeaza codurile numerice ASCII pentru a
determina daca un caracter este sau nu imprimabil.Sunt imprimabile toate
caracterele alfanumerice si semnele de punctuatie,inclusiv blank space
(spatiul gol),adica codurile ASCII 32-127.
Functia returneaza nonzero pentru caracterele imprimabile.
EXEMPLU: #include
#include
#include
int a,nr;
main()
{ printf("Introduceti un numar oarecare (0-255): \n");
scanf("%d",&a);
nr=isprint(a);
if (nr==0)
printf("Caracterul NU ESTE imprimabil ! \n");
else
printf("Caracterul este:%c si ESTE imprimabil ! \n",a);
sleep(3);
}
FUNCTIA ispunct()
-determina daca un caracter este semn de punctuatie
SINTAXA GENERALA este: int ispunct(int c);
Functia este un macro si determina daca un caracter oarecare este sau nu
este un semn de punctuatie utilizat pentru editarea textelor.Utilizeaza
codurile numerice ASCII si identifica toate caracterele care sunt impri-
mabile dar nu sunt alfanumerice sau spatiul gol.
Functia returneaza nonzero pentru caracterele care sunt semn de punctuatie
EXEMPLU: #include
#include
#include
int a,val;
main()
{ printf(Introduceti un numar oarecare (0-255): \n");
scanf("%d",&a);
nr=ispunct(a);
if (nr==0)
printf("Caracterul NU ESTE semn de punctuatie ! \n");
else
printf("Caracterul este:%c si ESTE semn de punctuatie! \n",a);
sleep(3);
}
Caracterele utilizate ca semn de punctuatie sunt cele cu codul numeric
cuprins intre 33 si 47.
Functia este foarte utila,atunci cand se scriu programe de analiza a
codurilor,care citesc un program token cu token si determina structura
programului: numarul de functii,numarul de variabile si constante,numarul
de linii de program,numarul de semne de punctuatie etc.
-369- [ ctype.h-isspace() si isupper() ]
FUNCTIA isspace()
-determina daca un caracter este sau nu este un spatiu gol.
SINTAXA GENERALA este: int isspace(int c);
Functia este un macro si utilizeaza codurile numerice ASCII pentru a
determina daca un carcacter oarecare(cel specificat) este sau nu este un
spatiu gol.Spatiile goale sunt cele rezultate la editarea caracterelor
space,tab,carriage return,new line,vertical tab,formfeed sau pentru orice
alt caracter local,definit ca atare de catre utilizator.
Functia returneaza zero pentru spatiile goale (cod ASCII 0x09,0x0D,0x20..)
EXEMPLU: #include
#include
#include
int a,nr;
main()
{ printf("Introduceti un numar oarecare (0-255): \n ");
scanf("%d",&a);
nr=isspace(a);
if (nr==0)
printf("Caracterul NU ESTE un spatiu gol ! \n");
else
printf("Caracterul ESTE un spatiu gol ! \n ");
sleep(3);
}
Introduceti 9 sau 32 pentru a verifica exercitiul.
FUNCTIA isupper()
-determina daca un caracter este scris cu majuscula(litera mare)
SINTAXA GENERALA este: int isupper(int c);
Functia este un macro si determina daca un caracter oarecare este sau nu
este scris cu litera mare (majuscula).Se utilizeaza doar pentru caracte-
rele alfabetice de la A la Z (coduri ASCII 64-90).
Functia returneaza nonzero pentru caracterele scrise cu litera mare.
EXEMPLU: #include
#include
#include
int a,nr;
main()
{ printf("Introduceti un numar oarecare (0-255): \n ");
scanf("%d",&a);
nr=isupper(a);
if (nr==0)
printf("Caracterul NU ESTE o majuscula ! \n");
else
printf("Caracterul este:%c si ESTE o majuscula ! \n",a);
sleep(3);
}
Functia poate avea diverse aplicatii:-numara numele proprii dintr-un text,
numara propozitiile dintr-un text,identifica comenzile de tip DOS,iden-
tifica constantele si variabilele (daca exista o conventie de notare cu
litera mare) etc.Se poate utiliza impreuna cu islower() pentru a alterna
modul de editare a unor cuvinte sau comenzi,etc.
-370- [ ctype.h-isxdigit() si toascii() ]
FUNCTIA isxdigit()
-determina daca un caracter este sau nu este hexazecimal
SINTAXA GENERALA este: int isxdigit(int c);
Functia este un macro si utilizeaza codurile numerice ASCII pentru a
determina daca un caracter este sau nu este hexazecimal(numar 0-9 sau
litera a-f sau A-F).
Functia returneaza nonzero pentru caracterele hexazecimale.
EXEMPLU: #include
#include
#include
int a,nr;
main()
{ printf("Introduceti un numar oarecare (0-255): \n");
scanf("%d",&a);
nr=isxdigit(a);
if (nr==0)
printf("Caracterul NU ESTE hexazecimal ! \n");
else
{ printf("Caracterul este :%c si ESTE hexazecimal ! \n",a);
printf("Scris ca adresa hexazecimala este: 0x000%c \n",a);
}
sleep(3);
}
Functia este utila mai ales pentru scrierea si citirea adreselor hexa-
zecimale (adrese DOS) sau pentru conversii de date in formate diferite.
FUNCTIA toascii()
-transcrie caracterele in format ASCII
SINTAXA GENERALA este: int toascii(int c);
Functia este un macro care realizeaza conversia unui numar de tip int
la un caracter de tip ASCII.Conversia se realizeaza prin stergerea celor
7 biti de nivel inferior (cei mai putin semnificativi),astfel incat sa
rezulte o valoare cuprinsa intre 0-127,valoare care va fi considerata a
fi codul numeric ASCII pentru caracterul rezultat.
Functia returneaza valoarea rezultata (caracterul ASCII rezultat).
EXEMPLU: #include
#include
#include
int a,nr;
main()
{ printf("Introduceti un numar >255 : \n");
scanf("%d",&a);
nr=toascii(a);
printf("Caracterul rezultat este: %c \n",nr);
sleep(3);
}
Functia este utila mai ales pentru a genera caractere aleatorii,pentru a
forma denumiri unice (pentru variabile,file,fisiere etc.) sau pentru a
realiza diverse conversii intre datele scrise in format numeric si cele
acceptate de standardul ASCII.Atentie-conversia reciproca nu este apli-
cabila decat daca se utilizeaza reguli fixe de conversie (se pierd date).
-371- [_tolower(),tolower()si _toupper() ]
FUNCTIA _tolower()
-converteste o majuscula la o minuscula (litera mare in litera mica)
SINTAXA GENERALA este: int _tolower(int ch);
Functia este identica cu tolower() cu deosebirea ca accepta doar carac-
tere de tip alfabetic de la A-Z.Pentru orice alt tip de caracter rezul-
tatul functiei este nedefinit.
Functia returneaza minuscula literei specificate (litera mica).
EXEMPLU: #include
#include
#include
int a,nr;
main()
{ a='A';
nr=_tolower(a);
printf("Caracterul rezultat este: %c \n",nr);
sleep(3);
}
FUNCTIA tolower()
-converteste un caracter la minuscula sa (daca exista)
SINTAXA GENERALA este: int tolower(int ch);
Functia este un macro si converteste un caracter alfabetic de la majuscula
la sa la minuscula (din litera mare in litera mica).Functia are efect doar
asupra caracterelor alfabetice de la A-Z (cod 65-91) dar accepta pentru
ch orice valoare cuprinsa intre 0 si 255,insa caracterele nealfabetice
raman nemodificate.
Functia returneaza minuscula (litera mica).
EXEMPLU: #include
#include
#include
int a,nr;
main()
{ for (a=65;a<91;a++)
{ nr=tolower(a);
printf("%c se transforma in %c \n",a,nr);
}
sleep(3);
}
FUNCTIA _toupper()
-translateaza un caracter alfabetic la majuscula sa (litera mare)
SINTAXA GENERALA este: int _toupper(int ch);
Functia este un macro si realizeaza conversia de la minuscula la majuscula
(din litera mica in litera mare).Functia este identica cu toupper() cu
deoasebirea ca nu accepta ca valori pentru ch decat codul numeric al
caracterelor alfabetice a-z (97-122).Pentru celelalte caractere ASCII,
rezultatul functiei este nedefinit.
Functia returneaza majuscula (litera mare)
Functia este utila mai ales pentru a realiza compatibilitatea unor date
intre sisteme diferite (de exemplu sistemul DOS nu accepta comenzi si
variabile decat daca sunt denumite cu majuscula).
-372- [ ctype.h-toupper() si _ctype[] ]
EXEMPLU: #include
#include
#include
int a,nr;
main()
{ a='z';
nr=_toupper(a);
printf("Caracterul rezultat este: %c \n",nr);
sleep(3);
}
FUNCTIA toupper()
-translateaza un caracter alfabetic la majuscula sa (litera mare)
SINTAXA GENERALA este: int toupper(int ch);
Functia este de fapt un macro si utilizeaza codurile numerice ASCII ale
caracterelor pentru a realiza conversia unui caracter alfabetic,din
minuscula in majuscula (din litera mica in litera mare -respectiv de
Dostları ilə paylaş: |
|
|