Șiruri în C (cu exemple)

În acest tutorial, veți afla despre șirurile din programarea C. Veți învăța să le declarați, să le inițializați și să le utilizați pentru diverse operațiuni de I / O cu ajutorul unor exemple.

În programarea C, un șir este o secvență de caractere terminate cu un caracter nul . De exemplu:

 char c() = "c string"; 

Când compilatorul întâlnește o secvență de caractere cuprinse între ghilimele duble, acesta adaugă în mod implicit un caracter nul la sfârșit.

Cum se declară un șir?

Iată cum puteți declara șiruri:

 char s(5); 

Aici, am declarat un șir de 5 caractere.

Cum se inițializează șirurile?

Puteți inițializa șirurile în mai multe moduri.

 char c() = "abcd"; char c(50) = "abcd"; char c() = ('a', 'b', 'c', 'd', ''); char c(5) = ('a', 'b', 'c', 'd', ''); 

Să luăm un alt exemplu:

 char c(5) = "abcde";

Aici încercăm să atribuim 6 caractere (ultimul caracter este '') unui chartablou cu 5 caractere. Acest lucru este rău și nu ar trebui să faceți acest lucru niciodată.

Atribuirea valorilor șirurilor

Tablourile și șirurile sunt cetățeni de clasa a doua în C; nu acceptă operatorul de atribuire odată ce este declarat. De exemplu,

 char c(100); c = "C programming"; // Error! array type is not assignable.

Notă: Utilizați funcția strcpy () pentru a copia în schimb șirul.

Citiți Șir de la utilizator

Puteți utiliza scanf()funcția pentru a citi un șir.

scanf()Funcția citește secvența de caractere până când se întâlnește spațiu (spațiu, NEWLINE, tab, etc.).

Exemplul 1: scanf () pentru a citi un șir

 #include int main() ( char name(20); printf("Enter name: "); scanf("%s", name); printf("Your name is %s.", name); return 0; ) 

Ieșire

 Introduceți numele: Dennis Ritchie Numele dvs. este Dennis.

Chiar dacă Dennis Ritchie a fost introdus în programul de mai sus, numai „Dennis” a fost stocat în șirul de nume. Pentru că a existat un spațiu după Dennis.

Cum se citește un rând de text?

Puteți utiliza fgets()funcția pentru a citi o linie de șir. Și, puteți utiliza puts()pentru a afișa șirul.

Exemplul 2: fgets () și put ()

 #include int main() ( char name(30); printf("Enter name: "); fgets(name, sizeof(name), stdin); // read string printf("Name: "); puts(name); // display string return 0; ) 

Ieșire

 Introduceți numele: Tom Hanks Nume: Tom Hanks 

Aici, am folosit fgets()funcția pentru a citi un șir de la utilizator.

fgets(name, sizeof(name), stdlin); // read string

De sizeof(name)rezultatele la 30. Astfel, putem lua un maxim de 30 de caractere ca date de intrare , care este mărimea șirului nume.

Pentru a imprima șirul, am folosit puts(name);.

Notă:gets() Funcția poate fi , de asemenea , pentru a lua de intrare de la utilizator. Cu toate acestea, este eliminat din standardul C.
Este pentru că gets()vă permite să introduceți orice lungime de caractere. Prin urmare, ar putea exista o depășire a tamponului.

Trecerea șirurilor la funcții

Șirurile pot fi transmise unei funcții într-un mod similar cu matricele. Aflați mai multe despre trecerea matricelor la o funcție.

Exemplul 3: Trecerea șirului la o funcție

 #include void displayString(char str()); int main() ( char str(50); printf("Enter string: "); fgets(str, sizeof(str), stdin); displayString(str); // Passing string to a function. return 0; ) void displayString(char str()) ( printf("String Output: "); puts(str); ) 

Corzi și pointeri

La fel ca matricele, numele șirurilor sunt „decăzute” pentru indicatori. Prin urmare, puteți utiliza indicii pentru a manipula elemente ale șirului. Vă recomandăm să verificați matricele și indicatoarele C înainte de a verifica acest exemplu.

Exemplul 4: Șiruri și pointeri

 #include int main(void) ( char name() = "Harry Potter"; printf("%c", *name); // Output: H printf("%c", *(name+1)); // Output: a printf("%c", *(name+7)); // Output: o char *namePtr; namePtr = name; printf("%c", *namePtr); // Output: H printf("%c", *(namePtr+1)); // Output: a printf("%c", *(namePtr+7)); // Output: o )

Funcții de șir utilizate în mod obișnuit

  • strlen () - calculează lungimea unui șir
  • strcpy () - copiază un șir la altul
  • strcmp () - compară două șiruri
  • strcat () - concatenează două șiruri

Articole interesante...