Scrigroup - Documente si articole

     

HomeDocumenteUploadResurseAlte limbi doc
AccessAdobe photoshopAlgoritmiAutocadBaze de dateCC sharp
CalculatoareCorel drawDot netExcelFox proFrontpageHardware
HtmlInternetJavaLinuxMatlabMs dosPascal
PhpPower pointRetele calculatoareSqlTutorialsWebdesignWindows
WordXml


PRELUCRARI ASUPRA SIRURILOR DE CARACTERE

c



+ Font mai mare | - Font mai mic



prelucrari asupra sirurilor de caractere

s Determina lungimea sirului s



size_t strlen (const char s*);

De exemplu, ca rezultat al apelului strlen ('alfa') se obtine valoarea

s Cauta in sirul s caracterul c Ca rezultat se obtine NULL daca c nu apare in s sau pointer la prima, respectiv ultima aparitie:

char *strchr (char *str, char c); /* cauta prima aparitie */

char *strrchr (char *str, char c); /* cauta ultima aparitie */

Exemplu de utilizare:

char *p;

. . . . .

if ((p = strchr(sir, car)) == NULL)

printf ('caracterul %c nu apare in sirul '%s'n', car, sir);

else

printf ('prima aparitie = %i, ultima aparitie = %in',

p - sir, strrchr(sir,car) - sir);

s Cauta prima aparitie in s1 a oricarui caracter din s2. Functia intoarce NULL daca nici un caracter din s2 nu apare in s1 sau pointer la prima aparitie a oricarui caracter din s2:

char *strpbrk (const char *s1, const char *s2);

Pentru a obtine indicele caracterului se poate utiliza functia:

int stribrk (const char *s1, const char *s2)

s Cauta in sirul s1 prima aparitie a sirului s2 Functia intoarce NULL daca sirul s2 nu exista in s1 sau pointer la prima aparitie a sirului s2 in s1:

char *strstr (const char *s1, const char *s2);

Exemplu de utilizare: functie care determina de cate ori apare s2 in s1

int Nstrstr (const char *s1, const char *s2)

}

s Copiaza in sirul dest sirul src si intoarce ca rezultat adresa sirului dest. Se presupune ca zona destinatie este suficient de mare pentru a memora sirul sursa (src).

char *strcpy (char *dest, const char *src);

Exemplu de utilizare:

char copie[10];

char *sir = 'abcdefghi';

strcpy(copie, sir);

printf('%sn', copie); => se va afisa: abcdefghi

Varianta care copiaza cel mult max caractere

char *strncpy (char *dest, const char *src, size_t max);

!!! Daca au fost copiate max caractere, acestea nu sunt urmate de terminatorul de sfarsit de sir.

Exemplu de utilizare:

char copie[10];

char *sir = 'abcdefghi';

strncpy(copie, sir, 3); /* s-au copiat 3 caractere */

copie[3] = '0'; /* se introduce terminatorul de sfarsit de sir */

printf('%sn', copie); => se va afisa: abc

s Compara sirul s1 cu sirul s2 si intoarce rezultat <0, 0 sau >0 cu sensul de s1 'predecesor' s2, sirurile sunt identice, respectiv s1 'succesor' s2:

int strcmp (const char *s1, const char *s2);

Exemplu de utilizare:

void test (const char *s1, const char *s2)

Efectul apelului test ('alfabet', 'alfa'); va consta in afisarea liniei

'alfabet' > 'alfa'



Varianta care compara cel mult max caractere:

int strncmp (const char *s1, const char *s2, size_t max);

Exemplu de utilizare:

void test (const char *s1, const char *s2, int max)

Efectul apelului test ('alfabet', 'alfa', 3); va consta in afisarea liniei

'alfabet' = 'alfa'

s Concatenarea sirului src la sirul dest. Functia intoarce sirul de caractere rezultat din concatenarea celor doua subsiruri.

char *strcat (char *dest, const char *src);

Exemplu de utilizare:

char destinatie[25];

char *blank = ' ', *sir1 = 'AAA', *sir2 = 'BBB';

strcpy(destinatie, sir1);

strcat(destinatie, blank);

strcat(destinatie, sir2);

printf('%sn', destinatie);

Se va afisa: AAA BBB

Varianta care adauga maxlen caractere din sirul src la sfarsitul sirului dest si apoi adauga terminatorul de sfarsit de sir.

char *strncat(char *dest, const char *src, size_t maxlen);

Exemplu de utilizare:

char destinatie[25];

char *sir = 'abcdefg';

strcpy(destinatie, 'AAAAA ');

strncat(destinatie, sir, 5);

printf('%sn', destinatie);

Se va afisa: AAAAA abcde

s Copierea unui sir intr-o locatie nou creata

char *strdup(const char *s);

strdup creeaza un sir duplicat al lui s, obtinind spatiu prin apelul functiei malloc. Spatiul alocat are dimensiunea egala cu (strlen(s) + 1) octeti. Cand nu mai este necesar spatiul alocat de functia strdup, acesta va trebui eliberat folosind functia free.

Exemplu de utilizare:

char *copie, *sir = 'abcde';

copie = strdup(sir);

printf('%sn', copie); /* se va afisa: abcde */

free(copie); /*eliberarea spatiului alocat de functia strdup*/

s Determina lungimea prefixului s1 format numai din caractere care apar, respectiv NU apar in s2:

size_t strspn (const char *s1, const char *s2);

size_t strcspn (const char *s1, const char *s2);

De exemplu, rezultul apelului strspn ('1234567890', '123DC8') este 3, iar rezultul apelului strcspn ('1234567890', 'abc7') este 6.

s Conversia sirului la litere mari / mici

char *strupr(char *s);

char *strlwr(char *s);

De exemplu, in cazul secventei:

char x[] = 'abcDEF', *S = strupr(strdup(x)), *s = strlwr(strdup(x));

printf (' %s %s %sn', x, S, s);

se va afisa

abcDEF ABCDEF abcdef

s Conversii de la sir de caractere la valoare numerica:

int atoi (const char *s);

long atol (const char *s);

double atof (const char *s);

long strtol (const char *s, char **endptr, int baza);

unsigned long strtoul (const char *s, char **endptr, int baza);

double strtod (const char *s, char **endptr);

*endptr - variabila in care se memoreaza adresa caracterului care urmeaza dupa partea convertita

s Conversii de la valoare numerica la sir de caractere:

char *itoa (int valoare, char *sir, int baza);

char *ltoa (long valoare, char *sir, int baza);

char *ultoa (unsigned long valoare, char *sir, int baza);

char *gcvt (double valoare, char *sir);

char *ecvt (double valoare, int nct, int *ppunct, int *semn);

char *fcvt (double valoare, int ncz, int *ppunct, int *semn);

unde

baza de reprezentare este de obicei 10;

nct specifica numarul de cifre total, iar ncz numarul de zecimale

ppunct este adresa la care se memoreaza pozitia punctului zecimal fata de inceputul sirului

semn reprezinta adresa la care se memoreaza 1 sau 0, dupa cum valoarea este negativa sau pozitiva

sir - adresa incepand de la care se memoreaza rezultatul conversiei; in cazul ultimelor doua functii rezultatul intors este cel al unui sir de lucru si daca se doreste pastrarea sa, el trebuie copiat, pentru a nu fi pierdut in momentul efectuarii urmatoarei conversii.




Politica de confidentialitate | Termeni si conditii de utilizare



DISTRIBUIE DOCUMENTUL

Comentarii


Vizualizari: 1035
Importanta: rank

Comenteaza documentul:

Te rugam sa te autentifici sau sa iti faci cont pentru a putea comenta

Creaza cont nou

Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved