Åžiruri de caractere [C]
4- Ce este un sir de caractere?
Un sir de caractere este un tablou de caractere,al carui ultim element este caracterul NULL (“â€).
- Declararea unui si de caractere:
Un sir de caractere se delara astfel:
Tip_de_date nume_sir[dimensiune];
Unde:
–Tip_de_date: este tipul datei (obligatoriu char) ;
–Nume sir: este numele pe care il dam sirului ;
–Dimensiune: reprezinta numarul de caractere pe care il contine sirul .
Exemplu:
Char s[10];
Vom avea tabloul s, cu elemente de tip char,avand 10 elemente.
Citirea unui sir de caractere de la tastatura:
Pentru a citi un sir de caractere de la tastatura avem nevoie de functia gets() care se gaseste in libraria <stdio.h> .
Exemplu:
Printf(“Dati sirul : );
Gets(s);
- Functii cu siruri de caractere:
Asupra sirurilor de caractere se pot efectua diferite “operatiiâ€,sau mai bine spus,schimbari.
Toate functiile care prelucreaza sirurile de caractere se afla in biblioteca <string.h> .
- 1) Strcpy()
Forma generala:
Strcpy(to,from)
Unde sirul from este copiat in sirul to.
Exemplu:
Strcpy(s1,s2);
Åžirul s2 va fi copiat in sirul s1.
2) Strcat()
Cu ajutorul acestei functii putem concatena (lipi) 2 siruri.
Forma generala:
Strcat(to,from);
Aceasta funcsie adauga continutul sirului from in sirul to.
Exemplu:
Strcat(s1,s2);
Continutul sirului s2 va fi adaugat peste cel al sirului s1.
3) Strcmp();
Aceasta functie compara continutul a 2 siruri in mod lexicografic.
Forma generala:
Strcmp(s1,s2);
Functia va intoarce :
-valoarea 0 daca cele 2 siruri sunt egale ;
-valoare pozitiva daca primul sir este mai mare decat al doilea ;
-valoare negativa daca primul sir este mai mic decat al doilea.
4) Strlen()
Cu ajutorul acestei functii putem afla lungimea unui sir.
Forma generala:
Strlen(s);
Exemplu:
I=strlen(s);
I va lua valoarea lungimii sirului s.
- Exemple programe cu functii:1) Strcpy:
#include <stdio.h> #include <string.h> #include <conio.h> Int main() { char v[100]; strcpy(v,"virusat"); printf("%s",v); getch(); return 0; }
Programul copie cuvantul “virusat†in sirul v.
2) Strcat:
#include <stdio.h> #include <string.h> #include <conio.h> Int main() { char v[100]; strcpy(v,"virusat "); printf("%s\n",v); strcat(v,"calculator"); printf("%s\n",v); getch(); return 0; }
Acest program concateneaza sirurile “virusat†si “calculatorâ€.In final va aparea “ virusat calculatorâ€.
3) Strcmp:
#include <stdio.h> #include <string.h> #include <conio.h> Int main() { char s1[15],s2[16]; printf("Dati primul cuvant: "); gets(s1); printf("Dati al doilea cuvant: "); gets(s2); printf ("egalitate:%d",strcmp(s1,s2) ); getch(); return 0; }
Programul compara sirurile s1 si s2. Pentru cuvintele “program†si “programato†rezultatul va fi -1,ceea ce inseamna ca “program†este mai mic din punct de vedere lexicografic decat “programatoâ€.
4) Strlen:
#include <stdio.h> #include <string.h> #include <conio.h> Int main() { char s[15]; printf("Introduceti cuvantul: "); gets(s); printf("Cuvantul are %d caractere.",strlen(s) ); getch(); return 0; }
- Exercitii propuse:
1) Cititi un sir de caractere de la tastatura,afisati lungimea acestuia si comparati-l cu sirul “copilâ€.Afisati rezultatul compararii si afisati un mesaj corespunzator.
2) Scrieti un program care sa citeasca de la tasatura o propoztie.Intre cuvintele propozitiei se vor pune semne de exclamare,nu spatii.Inlocuiti semnele cu puncte si afisati din nou propozitia.
3) Scrieti un program care sa compare 2 siruri de caractere,sa determine lungimea fiecaruia si sa concateneze cele 2 siruri.Afisati rezultatele obinute.
4) Cititi de la tastaura un sir de caractere si verificati daca este identic cu sirul “soareceâ€.Afisati un mesaj corespunzator.
- Proiect HANGMAN ( facut cu ajutorul lui Alex [dranaxum] )
#include <stdio.h> #include <string.h> #include <ctype.h> #include <conio.h> int main() { char cuv[]="inteligent",s[]="..........",l; int g=0,nr=0,n,j,p=0; n=strlen(cuv); printf("Joci spanzuratoarea: \n"); printf(s); printf("\n"); do { printf("litera:\n"); l=getche(); printf("\n"); g=0; nr++; for (j=0;j<n;j++) { if (l==cuv[j]) { s[j]=l; g=1; } else p++; } if (!g) { printf("n-ai ghicit !\n"); printf("incercari gresite: %d\n",p/10); } printf(s); printf("\n"); } while ( (strcmp(s,cuv)) &&(nr<=15) ); if (!strcmp(s,cuv) ) printf("Bravo! Ai catigat !"); else printf("Ai pierdut..."); getch(); return 0; }
Enjoy it ! 😀
Foarte dragut Cosmina!Felicitari!
[…] Email. De asemenea ne poti urmari si pe Twitter. Powered by WP Greet BoxM-am gandit sa dezvolt un vechi articol scris de Cosmina, privind sirurile de caractere si sa prezint toate functiile de prelucrare a […]
” al carui ultim element este caracterul NULL (“â€). ”
Sigur nu e ultimul element backslash zero? Apropo,NULL..din cate stiam eu..nu e caracter.
^ ” este echivalent cu NULL. Caracter poate sa fie orice, poti sa interpretezi cum vrei tu cele 256 de valori posibile dintr-o variabila pe 8 biti. Daca cauti pe google „ASCII code” ai sa vezi ca acolo sunt cuprinse mai multe caractere decat literele de la tastatura (caractere speciale(CR,LF,TAB), caractere grafice, etc.).