Este cel mai mic întreg: ocupă 8 biţi, (un octet).
Intervalul de numere care se pot reprezenta pe 8 cifre binare este de la 0 la 28-1, adică 0..255, cu totul 256 de valori; deoarece avem şi numere negative, intervalul se translatează cu 128, ceea ce înseamnă că un char este un număr întreg din intervalul -128..127.
În acelaşi timp, ştim că el este un tip dual: poate fi văzut atît ca întreg pe 8 biţi cît şi ca un caracter. Dacă vrem să îl tipărim, putem folosi în C formatul %d (dacă vrem să afişăm valoarea lui întreagă), respectiv formatul %c (pentru a-l afişa ca un caracter).
În C++ putem folosi cout<<.
Up Home Structura Site Algoritmi elementari
Exemple: 'a' 'B’ ‘5’ ‘?’ ‘+’ şi orice găsim în sectorul principal al tastaturii
O constantă caracter are ca valoare codul ASCII al caracterului pe care il reprezintă.
Acest set de caractere are următoarele proprietăţi:
Up Home Structura Site Algoritmi elementari
O constantă caracter corespunzătoare unui caracter imprimabil se reprezintă prin caracterul respectiv, inclus între apostrofuri.
Exemple:
‘A’ are valoarea 65
‘a’ are valoarea 97
‘0’ are valoarea 48
‘*’ are valoarea 42
Excepţii de la regula de mai sus le constituie caracterele imprimabile apostrof (') si backslash (\).
Caracterul backslash se reprezintă: '\\'.
Up Home Structura Site Algoritmi elementari
Pentru caracterele neimprimabile, se folosesc secvenţe escape.
O secvenţă escape furnizează un mecanism general şi extensibil pentru reprezentarea caracterelor invizibile sau greu de obţinut.
În continuare, sunt prezentate câteva caractere escape utilizate frecvent:
‘\n’ 10 LF rand nou (Line Feed)
‘\t’ 9 HT tabulator orizontal
‘\r’ 13 CR pozitioneaza cursorul in coloana 1 din randul curent
‘\f’ 12 FF salt de pagina la imprimanta (Form Feed)
‘\a’ 7 BEL activare sunet
O constantă caracter pentru o secvenţă escape poate apare însă şi sub o formă în care se trece codul ASCII, în octal, al caracterului dorit:
’\ddd’ - unde d este o cifră octală
Exemple:
’\11’ (pentru ’\t’) - reprezintă constanta caracter backspace, cu codul 9 în baza 10, deci codul 11 în baza 8.
’\15’ (pentru ’\r’) - reprezintă constanta caracter CR, cu codul 13 în baza 10, deci codul 15 în baza 8.
În fişierul <ctype.h> există o serie de funcţii (codificate ca macroinstrucţiuni) care primesc un parametru întreg (ce se converteşte în unsigned char), şi întorc rezultatul diferit de 0 sau egal cu 0, după cum caracterul argument satisface sau nu condiţia specificată:

Up Home Structura Site Algoritmi elementari
În limbajul C/C++, şirurile de caractere sunt vectori având tipul de bază char.
Un şir de caractere se termină prin marcatorul \0, (caracterul nul.)
De exemplu, şirul "x2A" este memorat pe 4 caractere, ultimul fiind \0, numărul de elemente al şirului fiind, deci, 3, iar dimensiunea şirului 4.
Un caracter dintr-un şir (vector) de caractere "a" poate fi accesat folosind indexul şirului (a[i], de exemplu).
Up Home Structura Site Algoritmi elementari
a[0] = 'A';
are ca efect că şirul a (adică vectorul a[ ]) ţine valoarea "Ana".
Up Home Structura Site Algoritmi elementari
scanf("%s", a);
Formatul "%s" este folosit pentru citirea unui sir de caractere. Se efectuează trei paşi:
- poziţionarea pe primul caracter al şirului;
- citirea tuturor caracterelor diferite de <Enter> şi introducerea lor în vectorul "a";
- citirea se face până la întâlnirea EOF (End Of File), după care se plasează '\0' la sfârşitul şirului.
Deoarece numele unui şir (ca la orice vector) este un pointer la adresa de bază a şirului, expresia "a" este echivalentă cu "&a[0]".
Dacă şirul citit are mai multe caractere decat cele rezervate, se va obţine o eroare.
Up Home Structura Site Algoritmi elementari
Up Home Structura Site Algoritmi elementari
Este important de reţinut că 'b' şi "b" sunt două lucruri diferite, prima fiind o constantă caracter, în timp ce a doua este o constantă şir de caractere, care conţine pe prima poziţie constanta caracter 'b' şi pe a doua poziţie caracterul '\0'
Up Home Structura Site Algoritmi elementari
char a[] = "x2A";
sau, echivalent, :
char a[] = {'x', '2', 'c', '\0'};
Up Home Structura Site Algoritmi elementari
Numele unui şir (ca la orice vector) poate fi tratat ca un pointer către adresa de bază a şirului din memorie.
O constantă - de exemplu, "x2A" - este memorată de către compilator. În acelaşi timp, aceasta este "un nume de şir". Diferenţa dintre un şir iniţializat cu o constantă şir şi un pointer iniţializat tot cu o constantă şir este că şirul conţine caractere individuale urmate de caracterul "\0", în timp ce pointerul este asignat cu adresa şirului constant din memorie.
Up Home Structura Site Algoritmi elementari
Constanta şir de caractere este o succesiune de zero sau mai multe caractere, încadrate de ghilimele.
În componenţa unui şir de caractere poate intra orice caracter, deci şi caracterele escape.
Lungimea unui şir este practic nelimitată.
Daca se doreşte continuarea unui şir pe randul următor, se foloseşte caracterul backslash.
Caracterele componente ale unui şir sunt memorate într-o zonă continuă de memorie (la adrese succesive).
Pentru fiecare caracter se memorează codul ASCII al acestuia.
După ultimul caracter al şirului, compilatorul plasează automat caracterul NULL (\0), caracter care reprezintă marcatorul sfârşitului de şir. Numărul de octeţi pe care este memorat un şir va fi, deci, mai mare cu 1 decât numărul de caractere din şir.
Exemple:
”Acesta este un sir de caractere” //constanta sir memorata pe 32 octeti
”Sir de caractere continuat\”pe randul urmator!” //constantă şir memorată pe 45 octeţi
”Sir \t cu secvente escape\n” //constantă şir memorată pe 26 octeţi
’\n’ //constantă caracter memorată pe un octet
”\n” //constantă şir memorată pe 2 octeţi (codul caracterului escape şi terminatorul de şir)
”a\a4” /*Sir memorat pe 4 octeti:
Pe primul octet: codul ASCII al caracterului a
Pe al doilea octet: codul ASCII al caracterului escape \a
Pe al treilea octet: codul ASCII al caracterului 4
Pe al patrulea octet: terminatorul de sir NULL, cod ASCII 0 */
”\\ASCII\\” /*Sir memorat pe 8 octeti:
Pe primul octet: codul ASCII al caracterului backslah
Pe al doilea octet: codul ASCII al caracterului A
Pe al treilea octet: codul ASCII al caracterului S
Pe al patrulea octet: codul ASCII al caracterului S
Pe al 6-lea octet: codul ASCII al caracterului I
Pe al 7-lea octet: codul ASCII al caracterului I
Pe al 8-lea octet: codul ASCII al caracterului backslah
Pe al 9-ea octet: terminatorul de sir NULL, de cod ASCII 0 */
”1\175a” /*Sir memorat pe 4 octeti:
Primul octet: Codul ASCII al caracterul 1
Al 2-lea octet: codul ASCII 125 (175 in octal) al caracterului }
Al 3-lea octet: codul ASCII al caracterului a
Al 4-lea octet: codul ASCII 0 pentru terminatorul sirului */
Up Home Structura Site Algoritmi elementari
Pentru a avea acces la aceste funcţii, trebuie inclusă biblioteca string.h
#include <string.h>
Calculează lungimea unui şir
Definiţia:
size_t strlen(const char *s);
Returnează numărul de caractere din s, fără caracterul null.


O variantă online poate fi experimentată la
sau la siruriStrlen
Up Home Structura Site Algoritmi elementari
Copiază şirul src (sursa) în dest (destinaţie)
Definiţia:
char *strcpy(char *dest, const char *src);
Returnează dest (destinaţie).


O variantă online poate fi experimentata la
sau la siruriStrcpy


O variantă online poate fi experimentata la
sau la siruriStrcpy1


O variantă online poate fi experimentata la
sau la siruriStrcpy2
Up Home Structura Site Algoritmi elementari
Acţionează asemănător cu funcţia strcpy( )
Copiază cel mult maxlen caractere din şirul src (sursa) în dest (destinaţie)
Definiţia:
char *strncpy(char *dest, const char *src, size_t maxlen);
Returnează dest (destinaţie).
Up Home Structura Site Algoritmi elementari
Adaugǎ şirul src (sursa) la sfârşitul şirului dest (destinaţie)
Definiţia:
char *strcat(char *dest, const char *src);
Returnează dest (destinaţie).


O variantă online poate fi experimentata la
sau la siruriStrcat
Up Home Structura Site Algoritmi elementari
Acţionează asemănător cu funcţia strcat( )
Adaugă cel mult maxlen caractere din şirul src (sursă) la şirul dest (destinaţie)
Definiţie:
char *strncat(char *dest, const char *src, size_t maxlen);
Returnează dest (destinaţie).
Up Home Structura Site Algoritmi elementari
Comparǎ un şir cu altul
Definiţia:
int strcmp(const char *s1, const char *s2);
Returnează o valoare care este:
< 0 dacă s1 este mai mic decât s2
= 0 dacă s1 este acelaşi cu s2
> 0 dacă s1 este mai mare decât s2


O variantă online poate fi experimentata la
sau la siruriStrcmp
Up Home Structura Site Algoritmi elementari
Acţionează asemănător cu funcţia strcmp( )
Compară cel mult maxlen caractere dintr-un şir s1 cu cele din alt şir s2
Definiţie:
int strncmp(const char *s1, const char *s2, size_t maxlen);
Acţionează asemănător cu funcţia strcmp( )
Compară un şir s1 cu alt şir s2, considerând egale literele mari cu cele mici (case insensitive)
Definiţie :
int stricmp(const char *s1, const char *s2);
Acţionează asemănător cu funcţia strcmp( )
Compară cel mult maxlen caractere dintr-un şir s1 cu cele din alt şir s2
şi considerând egale literele mari cu cele mici (case insensitive)
Definiţie:
int strncmpi(const char *s1, const char *s2, size_tn);
Caută prima apariţie a caracterului c în şirul s
Definiţia:
char *strchr(const char *s, int c);
Returnează un pointer la prima apariţie a caracterului c în şirul s; dacă nu apare în şirul s, funcţia strchr returnează NULL.



O variantă online poate fi experimentata la
sau la siruriStrchr
Up Home Structura Site Algoritmi elementari
Caută ultima apariţie a caracterului c în şirul s
Definiţia:
char *strrchr(const char *s, int c);
Returnează un pointer la ultima apariţie a caracterului c în şirul s; dacă nu apare în şirul s, funcţia strchr returnează NULL.
Găseşte prima apariţie a unui subşir s1 în alt şir s2
Definiţia:
char *strstr(const char *s1, const char *s2);
Returnează un pointer la elemental din şirul s1 care conţine pe s2 (pointează către s2 în s1), sau NULL dacă s2 nu apare în s1.



O variantă online poate fi experimentata la
sau la siruriStrstr
Up Home Structura Site Algoritmi elementari
Inverseazǎ ordinea tuturor caracterelor din şirul s
Definiţie:
char *strrev(char *s);
Returnează un pointer la şirul inversat.


Fără rezolvare online
Up Home Structura Site Algoritmi elementari
Converteşte toate literele din şirul s la uppercase (litera mare corespunzătoare)
Definiţia:
char *strupr(char *s);
Returnează un pointer la şirul s.


Fără rezolvare online
Up Home Structura Site Algoritmi elementari
Converteşte toate literele din şirul s la lowercase (litera mică corespunzătoare)
Definiţia:
char *strlwr(char *s);
Returnează un pointer la şirul s.


Fără rezolvare online
Up Home Structura Site Algoritmi elementari
Scanează şirul s1 pentru a găsi prima apariţie a unui caracter din şirul s2
Definiţie:
char *strtok(char *s1, const char *s2);
Şirul s2 defineşte, de obicei, caractere separatoare.
Funcţia strtok interpretează şirul s1 ca o serie de cuvinte separate de caracterele separatoare din şirul s2.
Dacă în şirul s1 nu este găsit nici un caracter din şirul s2, funcţia returnează NULL.
Dacă este găsit un caracter, pe poziţia următoare din s1este pus un character NULL şi funcţia returnează un pointer.
Următoarele chemări ale funcţiei strtok se vor efectua cu valoarea NULL ca prim parametru al funcţiei strtok.




O variantă online poate fi experimentata la
sau la siruriStrtok
Up Home Structura Site Algoritmi elementari
double atof(sir);
converteşte un şir către tipul double. Dacă această conversie eşuează (se întâlneşte un caracter nenumeric), valoarea întoarsă este 0. Această funcţie (ca şi cele similare) necesită includerea bibliotecii stdlib.h.
long double _atold(sir);
converteşte un şir către tipul long double. Dacă această conversie eşuează, valoarea întoarsă este 0.
int atoi(sir);
converteşte un şir către tipul int. Dacă această conversie eşuează (se întâlneşte un caracter nenumeric), valoarea întoarsă este 0.
long atol(sir);
converteşte un şir către tipul long. Dacă această conversie eşuează, valoarea întoarsa este 0.
itoa(int valoare,sir,int baza);
converteşte o valoare de tip int în şir, care este memorat în variabila sir. Baza reţine baza de numeraţie către care să se facă conversia. În cazul bazei 10, şirul reţine şi eventualul semn -.
ltoa(long valoare,sir,int baza);
converteşte o valoare de tip long int în şir, care este memorat în variabila sir.
ultoa(unsigned long valoare,sir,int baza);
converteşte o valoare de tip unsigned long în şir, care este memorat în variabila sir.
Text
Text
Text
Text
Text
Text
Text
Text
Text