Sunteți pe pagina 1din 6

iruri de caractere

ir de caractere Vector de caractere.


Declaraie :
char sir[20] ;

Observaie:
1. Terminatorul de ir: \0.
2. Terminatorul de ir permite testarea sfritului irului de caractere.
Citirea unui ir de caractere :
- caracter cu caracter ca la vector de intregi;
-

gets ,fgets, scanf .

Afiarea unui ir de caractere:


- caracter cu caracter ca la vector de intregi;
-

puts, printf .

Exemplu:

#include <stdio.h>
int main()
{
char nume[20];
char prenume[20];
printf("Introduceti numele :");
scanf("%s",nume);
fflush(stdin);
printf("Introduceti prenumele :");
scanf("%s",prenume);
fflush(stdin);
printf("\n%s %s\n",prenume, nume);
return 0;
}
#include <stdio.h>
int main()
{
int n = -1;
char ch;
char str[30];
printf("Introduceti caracterele sirului( 0 - terminare) :\n");
do {
fflush(stdin);
scanf("%c",&ch);
if(ch == '0') break;
n++;
str[n] = ch;
}while(1);

str[n+1] = '\0';
printf("S-a citit sirul : %s",str);
return 0;
}

Functii standard utilizate la prelucrarea sirurilor de caractere(Tabel nr.1, Tabel


nr.2)
1. Lungimea unui ir de caractere
#include <stdio.h>
#include <string.h>

int main()
{
char *const p="Acesta este un sir";
int n;
n=strlen(p);
printf("%d",n);
char tab[]="Acesta este un sir";
n=strlen(tab);
printf("%d",n);
n=strlen("Acesta este un sir");
printf("%d",n);
return 0;
}

2. Copierea unui ir de caractere


#include <stdio.h>
#include <string.h>

int main()
{
char tab[]="Acest sir se copiaza";
char t[sizeof(tab)];
strcpy(t,tab);
puts(t);
char t1[100];
strcpy(t1,"Acest sir se copiaza");
puts(t1);
char *p="Acest sir se copiaza";
char t2[100];
char *q;
q=strcpy(t2,p);

puts(q);
return 0;
}

3. Concatenarea irurilor de caractere

#include <stdio.h>
#include <string.h>

int main()
{
char tab1[100]="Primul";
char tab2[]="si al doilea";
strcat(tab1," ");
strcat(tab1,tab2);
puts(tab1);
return 0;
}

4. Compararea irurilor de caractere

#include <stdio.h>
#include <string.h>

int main()
{
char *sir1="ABC";
char *sir2="abc";
int i = -2;
int j = -2;
i=strcmp(sir1,sir2);
j=stricmp(sir1,sir2);
printf("strcmp(sir1,sir2) : %d\n",i);
printf("stricmp(sir1,sir2): %d\n",j);
return 0;
}

5. Cutarea apariiilor unui caracter ntr-un ir de caracatere


#include <stdio.h>
#include <string.h>

int main()
{
char sir[] = "Acesta este un sir";
char *pch;
printf ("Caracterul 's' in \"%s\"...\n",sir);
pch=strchr(sir,'s');
while (pch!=NULL)
{
printf ("%d\n",pch-sir+1);
pch=strchr(pch+1,'s');
}
return 0;

6. Transformri ntre majuscule i minuscule


#include <stdio.h>
#include <string.h>

int main()
{
char sir[] = "Acesta este un sir";

printf("Sirul initial: %s\n",sir);


printf("Sirul modificat: %s\n",strlwr(sir));
return 0;

7. Separarea unitilor lexicale dintr-un ir de caractere


#include <stdio.h>
#include <string.h>
int main()
{
char str[] ="- Acesta, este un sir.";
char * pch;
pch = strtok (str," ,.-");
while (pch != NULL)
{
printf ("%s\n",pch);
pch = strtok (NULL, " ,.-");
}
return 0;
}

Exerciii:
1. Pentru un ir de caractere citit de la tastatur, str, se cere:
- S se determine numrul de apariii a unui caracter n cadrul irului;
- S se tearg toate apariiile unui subir, str1, din cadrul irului;
- S se afieze numrul de vocale i de consoane din str ;
- S se verifice dac irul str este un palindrom.
2. Se consider dou iruri de caractere citite de la tastatur. S se scrie un program care
afiseaz toate cuvintele comune din cele dou iruri citite.
3. S se afieze unul sub altul, toate sufixele proprii ale unui cuvant citit de la tastatura
(sufixele unui cuvant sunt compuse din minim un caracter si maxim toate caracterele,
citite de la dreapta la stanga).
Exemplu : Pentru cuvntul limbaj, se va afia
j
aj
baj
mbaj,

imbaj
limbaj.
4. Se citesc de la mediul de intrare n cuvinte. S se scrie un program care ordoneaz
cuvintele citite:
- n funcie de lungimea acestora;
- alfabetic.
5. Se citte de la tastatur un ir de caractere care conine mai multe cuvinte separate
prin unul sau mai multe spaii. Se cere:
- s se afieze cuvintele irului care nu ncep i nu se terminc cu majuscul;
- s se afieze cuvinte irului rotite cu k caractere; k se va citit de la tastatur;
- pentru un caracater ch citit de la tastatur, s se sorteze cresctor cuvintele aflate
pe poziii pare n funcie de numrul de apariii ale caracterului ch; primul cuvnt
se consider cu indexul 0;
- s se corecteze i s se afieze cuvintele care conin greeli ; un cuvnt este
considerat greit dac acesta conine secvene de dou sau mai multe caractere
consecutive identice, iar corectarea se va realiza prin eliminarea surplusului de
caractere identice.
6. Scrieti un program care va prelucra un sir de caractere citit de la tastatura astfel:
Orice succesiune de doua sau mai multe vocale va fi inlocuita cu numele celui care scrie
programul.
Exemplu: amoocuuuiintuio ->ampopcpopntpop
int
int
int
int
int

Functie
islower(char
isupper(char
isalpha(char
isdigit(char
isspace(char

c)
c)
c)
c)
c)

1
1
1
1
1

daca
daca
daca
daca
daca

c
c
c
c
c

{
{
{
{
{

Valoare returnata
a,..z}
A,..Z}
a,..z}{ A,..Z}
0,..9}
, \n, \t,\r,\f,\v}

Tabel nr.1( ctype.h)


Functie
char* strcopy( char* d, const char* s)
char* strncopy( char* d, const char* s, int
n)
char* strcat( char* d, const char* s)
char* strncat( char* d, const char* s, int
n)
int strcmp( const char* d, const char* s)

int stricmp( const char* d, const char* s)

Valoare returnata
Copiaza sirul s in sirul
d( inclusive terminatorul
de sir); intoarce d
Copiaza n carcactere din s
in sirul d( completand cu
terminatorul de sir);
intoarce d
Concateneaza sirul s la
sirul d; intoarce d
Concateneaza cel mult n
carcatere din sirul s la
sirul d( completeaza cu
\0); intoarce d
Compara sirurile d si s:
-1 : d<s;
0 : d=s;
1 : d>s;
Compara sirurile d si s,
fara a face diferente inre

int strncmp( const char* d, const char* s,


int n)
char* strchr( const char* d, char c)

char* strrchr( const char* d, char c)

char* strstr( const char* d, const char* s)

majuscule si minuscule
Compara cel mult n
caractere sirurile d si s(
strcmp)
Cauta carcaterul c in
sirul d; intoarce un
pointer la prima aparitie
a lui c in d sau NULL;
Cauta carcaterul c in
sirul d; intoarce un
pointer la ultima aparitie
a lui c in d sau NULL;
Intoarce un pointer la
prima aparitie a
subsirului s in d sau
NULL;

int strlen( const char * s)

Intoarce lungimea sirului


s;

char* strlwr(char* s)

Convertese literele mari


in litere mici in sirul s;
Convertese literele mici
in litere mari in sirul s;

char* strupr(char* s)
char* strlwr(char* s)
Char *strdup(const char *d)

Char* strtok( const char* d, const char* s)

Tabel nr.2( string.h)

Convertese literele mari


in litere mici in sirul s;
Copiaza sirul d intr-o
noua locatie de memorie si
intoarce un pointer catre
acea locatie;
Cauta in d subsirurile
delimitate de caracterele
din s.

S-ar putea să vă placă și