Documente Academic
Documente Profesional
Documente Cultură
PC Lab7 PDF
PC Lab7 PDF
Activiti
- Prezentarea generalitilor despre lucrul cu iruri de caractere n limbajul C;
- Lucrul cu principalele funcii din biblioteca standard C pentru iruri de caractere;
Exemplul de mai sus declar un tablou de 10 de elemente de tip caracter. Un asemenea tablou se
poate folosi pentru memorarea unui ir de caractere de lungime variabil, dar de maxim 9 de caractere,
ntruct ultimul element este rezervat pentru terminatorul de ir.
Dac irul de mai sus conine valoarea "TEST", coninutul memoriei rezervate tabloului este
urmtorul:
Index 0 1 2 3 4 5 6 7 8 9
Continut T E S T \0 - - - - -
Dac se dorete doar accesarea i prelucrarea elementelor unui ir de caractere care a fost alocat
anterior, static (declaraie de tablou) sau dinamic, se poate utiliza i o variabil de tip pointer ctre
caracter:
sir
ptrsir
ntruct variabila ir este declarat ca i tablou, numele acesteia reprezint un pointer ctre
primul element, de aceea nu se mai folosete operatorul adres (&) n apelul scanf.
Utilizarea funciei scanf pentru citirea irurilor de caractere are un dezavantaj major: nu se pot
citi iruri care conin spaii sau tab. De aceea, se recomand utilizarea funciei gets:
Exemplu:
char sir [80];
int n;
2
Programarea Calculatoarelor Capitolul 7 iruri de caractere
n = strlen (sir);
printf ("Lungimea sirului este: %d \n", n);
7.2.3 Copierea coninutului unui ir de caractere
Pentru a copia coninutul unei variabile sau constante de tip ir de caractere ntr-o variabil tot
de tip ir de caractere trebuie utilizat funcia:
Exemplu:
char sir1[80], sir2[80];
Este sarcina programatorului s se asigure c destinaia are suficient spaiu alocat pentru a
memora toate caracterele din variabila surs (inclusiv terminatorul de ir).
7.2.4 Compararea alfabetic a doua iruri de caractere
Pentru compararea a dou iruri de caractere nu se pot aplica operatorii relationali ntre cele
doua iruri (<, >, <=, >=, ==, !=), ntruct acetia au ca efect compararea adreselor n memorie ale
celor dou iruri. De aceea trebuie utilizat aceast funcie:
Exemplu:
char sir1 [80], sir2 [80];
int x;
if (x > 0)
printf ("%s > %s \n", sir1, sir2);
else
if (x == 0)
printf ("%s == %s \n", sir1, sir2);
else
printf ("%s < %s \n", sir1, sir2);
3
Programarea Calculatoarelor Capitolul 7 iruri de caractere
Exemplu:
char sir [80], subsir [80];
char *p;
if (p != NULL)
printf ("%s contine %s \n", sir, subsir);
else
printf ("%s nu contine %s \n", sir, subsir);
Din nou, este responsabilitatea programatorului s se asigure c destinaia are suficient spaiu
alocat pentru a memora toate caracterele din variabila surs (inclusiv terminatorul de ir).
Exemplu:
char sir1[40], sir2[40], sir [80];
printf ("Introduceti primul sir: ");
gets (sir1);
printf ("Introduceti al doilea sir: ");
gets (sir2);
strcpy (sir, sir1);
strcat (sir, sir2);
printf ("Ati introdus: %s \n", sir);
Exemplu: Programul urmtor citete de la tastatur un nume i determin dac este nume de
fat sau de biat (toate numele de fat, cu excepia numelui "Carmen" se termin cu o vocal):
#include <stdio.h>
#include <string.h>
#include <ctype.h> /* pentru toupper */
4
Programarea Calculatoarelor Capitolul 7 iruri de caractere
do
{
printf ("Introduceti numele: ");
gets (nume);
n = strlen (nume);
}while (n == 0);
/* nu permitem introducerea unui sir vid */
c = toupper (nume [n 1]);
#include <stdio.h>
#include <string.h>
n = strlen (sir);
printf ("\n");
return 0;
}
#include <stdio.h>
#include <string.h>
5
Programarea Calculatoarelor Capitolul 7 iruri de caractere
do
{
do
{
printf ("Introduceti sirul: ");
gets (sir);
n = strlen (sir);
}while (n == 0);
valid = 1;
if (!valid)
printf ("Sirul introdus nu este numar in
baza 2 ! \n");
}while (!valid);
p = 1; /* puterea lui 2 */
val = 0; /* valoarea numarului */
Variabila tab are alocat spaiu pentru 10 iruri de caractere, fiecare ir avnd lungimea maxim
de 79 de caractere + terminatorul de ir. Primul ir este tab [0], ultimul este tab [9].
3. S se scrie un program C care realizeaz urmtoarele:
a) terge dintr-un ir de caractere un subir specificat prin poziie i lungime.
b) Insereaz ntr-un ir ncepnd cu o poziie dat un al ir.
c) Citete doua cuvinte i nlocuiete ntr-un text introdus de la tastatur toate apariiile
primului cuvnt prin cel de-al doilea.
4. S se citeasc un text de la tastatur care se ncheie cu .. S se afieze cel mai lung cuvnt din
text (dac sunt mai multe cu aceeai lungime maxim se va afia doar unul dintre ele).
6
Programarea Calculatoarelor Capitolul 7 iruri de caractere