Scrigroup - Documente si articole

     

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


Initializarea vectorilor de caractere

c



+ Font mai mare | - Font mai mic



Initializarea vectorilor de caractere

Citirea unui sir de la tastatura utilizand functiile scanf() si gets().



Utilizarea functiei scanf(). Exemplu:

# include <stdio.h>

void main (void)

S-au definit variabilele nume si adresa ca tip sir de caractere de maximum 20 si 40 de caractere. Sirul '%s' care apare in apelul functiei scanf() precizeaza ca se vor citi in variabilele nume, respectiv adresa, valori de tip sir de caractere. In printf() descriptorul '%s' are rolul de a preciza cum trebuie convertite valorile datelor de afisat (in cazul de fata, valorile variabilelor nume si adresa).

Functia scanf() citeste un sir de caractere din bufferul de intrare pana cand intalneste un spatiu, un caracter TAB, sau ajunge la sfarsitul acestuia. Astfel, daca se tasteaza, 'ENE ALEXANDRU', atunci in variabila nume se va memora doar valoarea 'ENE'. Pentru a obtine sirul in intregime este recomandat sa se transmita numele sub forma: 'ENE_ALEXANDRU'.

Cea mai buna cale de a introduce un sir de la tastatura consta in utilizarea functiei gets() din fisierul antet 'stdio.h'. Forma generala a functiei gets() este:

gets (nume_vector)

Pentru a citi un sir se apeleaza gets() avand ca argument numele vectorului, fara nici un index. Functia gets() returneaza vectorul ce va pastra sirul de caractere introdus de la tastatura. gets() va continua sa citeasca caractere pana la introducerea caracterului CR.

Exemplu: Programul urmator afiseaza sirul de caractere introdus de la tastatura.

# include <stdio.h>

void main (void)

Se observa ca functia printf() poate primi ca argument un sir de caractere. Daca se introduce un sir mai lung decat dimensiunea tabloului, vectorul va fi suprascris.

Initializarea vectorilor de caractere utilizand constantele sir

Folosind constantele sir, vectorii de caractere se initializeaza sub forma:

char nume_vector[size] = 'sir_de_caractere'

unde size = numarul caracterelor din sir plus 1. Exemplu:

# include <stdio.h>

void main (void)

Vectorul nume va ocupa incepand de la adresa nume, 13 + 1 = 14 octeti, iar cel de-al doilea vector va ocupa incepand de la adresa adresa, 23 + 1 = 24 locatii (bytes).

Functia puts() scrie pe stdout sirul memorat in vectorul al carui nume apare ca parametru al functiei puts(), precum si caracterul 'n'.

De multe ori, in C se realizeaza initializarea unor vectori de caractere a caror dimensiune nu este precizata. Daca dimensiunea vectorului nu este precizata, compilatorul C va crea un vector suficient de lung incat sa permita initializarea dorita.

Exemplu: In loc sa scriem :

char e1[12] = 'read errorn';

char e2[13] = 'write errorn';

char e3[18] = 'cannot open filen';

putem scrie:

char e1[ ] = 'read errorn';

char e2[ ] = 'write errorn';

char e3[ ] = 'cannot open filen';

Cu aceasta ultima initializare, instructiunea

printf ('%s are lungimea %dn', e2, sizeof (e2));

va tipari:

write error

are lungimea 13

Initializarea unui vector (tablou unidimensional) se poate face si cu o lista de initializatori scrisi intre acolade. Daca vectorul are o lungime necunoscuta, numarul de initializatori determina marimea tabloului, iar tipul devine complet. Daca tabloul are lungime fixa, numarul de initializatori nu poate depasi numarul de membri din tablou. In cazul in care sunt mai putini initializatori, membrii in plus sunt initializati cu zero. Exemple:

- Instructiunea urmatoare initializeaza un vector de 10 intregi cu numerele de la 1 la 10:

int     i[10] = ;

Rezulta ca: i[0] = 1, , i[9] = 10.

- Instructiunea urmatoare declara si initializeaza vectorul x ca un tablou unidimensional cu 3 membri:

int     x[] = ;

- Instructiunea urmatoare:

char sir[6] = ;

este echivalenta cu:

char sir[6] = 'hello';



Politica de confidentialitate | Termeni si conditii de utilizare



DISTRIBUIE DOCUMENTUL

Comentarii


Vizualizari: 1072
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