Șiruri în C: Cum să declare variabilă, inițializează, imprimă, exemplu

Cuprins:

Anonim

Ce este șirul în C?

Un șir în C nu este altceva decât o colecție de caractere într-o succesiune liniară. „C” tratează întotdeauna un șir o singură dată, chiar dacă conține spații albe. Un singur caracter este definit folosind reprezentarea ghilimelelor unice. Un șir este reprezentat folosind ghilimele duble.

Example, "Welcome to the world of programming!"

„C” oferă o bibliotecă standard care conține multe funcții care pot fi utilizate pentru a efectua cu ușurință operații complicate pe Șiruri în C.

În acest tutorial, veți învăța-

  • Cum să declarați și să inițializați un șir în C
  • Intrare șir: Citiți un șir
  • Ieșire șir: tipăriți / afișați un șir
    • funcția fputs ()
    • pune funcția
  • Biblioteca de șiruri
  • Conversia unui șir într-un număr

Cum să declarați și să inițializați un șir în C

AC String este o matrice simplă cu caracter ca tip de date. Limbajul „C” nu acceptă direct șirul ca tip de date. Prin urmare, pentru a afișa un șir în C, trebuie să folosiți o matrice de caractere.

Sintaxa generală pentru declararea unei variabile ca șir în C este următoarea,

char string_variable_name [array_size];

Declarația clasică de șiruri se poate face după cum urmează:

 char string_name[string_length] = "string"; 

Mărimea unui tablou trebuie definită în timp ce se declară o variabilă C String, deoarece este utilizată pentru a calcula câte caractere vor fi stocate în variabila string din C. Unele exemple valide de declarație șir sunt după cum urmează,

char first_name[15]; //declaration of a string variablechar last_name[15];

Exemplul de mai sus reprezintă variabile de șir cu o dimensiune de matrice de 15. Aceasta înseamnă că matricea de șiruri C dată este capabilă să conțină cel mult 15 caractere. Indexarea matricei începe de la 0, prin urmare va stoca caractere dintr-o poziție 0-14. Compilatorul C adaugă automat un caracter NULL '\ 0' la matricea de caractere creată.

Să studiem inițializarea șirului în C. Exemplul următor demonstrează inițializarea șirurilor în C,

char first_name[15] = "ANTHONY";char first_name[15] = {'A','N','T','H','O','N','Y','\0'}; // NULL character '\0' is required at end in this declarationchar string1 [6] = "hello";/* string size = 'h'+'e'+'l'+'l'+'o'+"NULL" = 6 */char string2 [ ] = "world"; /* string size = 'w'+'o'+'r'+'l'+'d'+"NULL" = 6 */char string3[6] = {'h', 'e', 'l', 'l', 'o', '\0'} ; /*Declaration as set of characters ,Size 6*/

În șirul 3, caracterul NULL trebuie adăugat în mod explicit, iar caracterele sunt încadrate între ghilimele unice.

„C” ne permite, de asemenea, să inițializăm o variabilă șir fără a defini dimensiunea matricei de caractere. Se poate face în felul următor,

char first_name[ ] = "NATHAN";

Numele de șiruri în C acționează ca un pointer, deoarece este practic un tablou.

Intrare șir: Citiți un șir

Când scrieți programe interactive care solicită utilizatorului introducerea, C oferă funcțiile scanf (), gets () și fgets () pentru a găsi o linie de text introdusă de la utilizator.

Când folosim scanf () pentru a citi, folosim specificatorul de format „% s” fără a folosi „&” pentru a accesa adresa variabilei, deoarece un nume de matrice acționează ca un pointer. De exemplu:

#include int main() {char name[10];int age;printf("Enter your first name and age: \n");scanf("%s %d", name, &age);printf("You entered: %s %d",name,age);}

Ieșire:

Enter your first name and age:John_Smith 48

Problema cu funcția scanf este că nu citește niciodată șiruri întregi în C. Va opri procesul de citire de îndată ce vor apărea spații albe, flux de formular, filă verticală, linie nouă sau o întoarcere a căruței. Să presupunem că oferim intrare ca „Tutoriale Guru99”, apoi funcția scanf nu va citi niciodată un șir întreg, deoarece un caracter spațial apare între cele două nume. Funcția scanf va citi numai Guru99.

Pentru a citi un șir conține spații, folosim funcția gets (). Devine ignoră spațiile albe. Se oprește din citire la atingerea unei linii noi (este apăsată tasta Enter). De exemplu:

#include int main() {char full_name[25];printf("Enter your full name: ");gets(full_name);printf("My full name is %s ",full_name);return 0;}

Ieșire:

Enter your full name: Dennis RitchieMy full name is Dennis Ritchie

O altă alternativă mai sigură la gets () este funcția fgets () care citește un număr specificat de caractere. De exemplu:

#include int main() {char name[10];printf("Enter your name plz: ");fgets(name, 10, stdin);printf("My name is %s ",name);return 0;}

Ieșire:

Enter your name plz: CarlosMy name is Carlos

Argumentele fgets () sunt:

  • numele șirului,
  • numărul de caractere de citit,
  • stdin înseamnă să citiți din intrarea standard care este tastatura.

Ieșire șir: tipăriți / afișați un șir

Funcția standard printf este utilizată pentru imprimarea sau afișarea șirurilor în C pe un dispozitiv de ieșire. Specificatorul de format utilizat este% s

Exemplu,

printf("%s", name);

Ieșirea șirului se face cu funcțiile fputs () și printf ().

funcția fputs ()

Fputs () necesită numele șirului și un pointer către locul în care doriți să afișați textul. Folosim stdout care se referă la ieșirea standard pentru a imprima pe ecran. De exemplu:

#include int main(){char town[40];printf("Enter your town: ");gets(town);fputs(town, stdout);return 0;}

Ieșire:

Enter your town: New YorkNew York

pune funcția

Funcția pune este utilizată pentru a imprima șirul în C pe un dispozitiv de ieșire și pentru a muta cursorul înapoi în prima poziție. Funcția pune poate fi utilizată în felul următor,

#include int main() {char name[15];gets(name); //reads a stringputs(name); //displays a stringreturn 0;}

Sintaxa acestei funcții este relativ simplă decât alte funcții.

Biblioteca de șiruri

Biblioteca standard „C” oferă diverse funcții pentru a manipula șirurile dintr-un program. Aceste funcții sunt, de asemenea, numite ca manipulatoare de șiruri. Toți acești manipulatori sunt prezenți în fișierul antet .

Funcţie Scop
strlen () Această funcție este utilizată pentru găsirea unei lungimi a unui șir. Returnează câte caractere sunt prezente într-un șir, cu excepția caracterului NULL.
strcat (str1, str2) Această funcție este utilizată pentru a combina două șiruri împreună pentru a forma un singur șir. Se adaugă sau concatenează str2 la sfârșitul str1 și returnează un pointer la str1.
strcmp (str1, str2) Această funcție este utilizată pentru a compara două șiruri între ele. Returnează 0 dacă str1 este egal cu str2, mai mic decât 0 dacă str1 str2.

Să luăm în considerare programul de mai jos care demonstrează funcțiile bibliotecii de șiruri:

#include #include int main () {//string initializationchar string1[15]="Hello";char string2[15]=" World!";char string3[15];int val;//string comparisonval= strcmp(string1,string2);if(val==0){printf("Strings are equal\n");}else{printf("Strings are not equal\n");}//string concatenationprintf("Concatenated string:%s",strcat(string1,string2)); //string1 contains hello world!//string lengthprintf("\nLength of first string:%d",strlen(string1));printf("\nLength of second string:%d",strlen(string2));//string copyprintf("\nCopied string is:%s\n",strcpy(string3,string1)); //string1 is copied into string3return 0;}

Ieșire:

Strings are not equalConcatenated string:Hello World!Length of first string:12Length of second string:7Copied string is:Hello World!

Alte funcții importante ale bibliotecii sunt:

  • strncmp (str1, str2, n): returnează 0 dacă primele n caractere ale str1 sunt egale cu primele n caractere ale str2, mai mici decât 0 dacă str1 str2.
  • strncpy (str1, str2, n) Această funcție este utilizată pentru a copia un șir dintr-un alt șir. Copiază primele n caractere ale str2 în str1
  • strchr (str1, c): returnează un pointer la prima apariție a caracterului c în str1 sau NULL dacă caracterul nu este găsit.
  • strrchr (str1, c): caută str1 invers și returnează un pointer la poziția lui char c în str1 sau NULL dacă caracterul nu este găsit.
  • strstr (str1, str2): returnează un pointer la prima apariție a str2 în str1 sau NULL dacă str2 nu este găsit.
  • strncat (str1, str2, n) Adaugă (concatenează) primele n caractere ale str2 la sfârșitul str1 și returnează un pointer la str1.
  • strlwr (): pentru a converti șirul în minuscule
  • strupr (): pentru a converti șirul în litere mari
  • strrev (): a inversa șirul

Conversia unui șir într-un număr

În programarea C, putem converti un șir de caractere numerice într-o valoare numerică pentru a preveni o eroare în timpul rulării. Biblioteca stdio.h conține următoarele funcții pentru conversia unui șir într-un număr:

  • int atoi (str) Stabilește ca ASCII să fie întreg; convertește str la valoarea int echivalentă. 0 este returnat dacă primul caracter nu este un număr sau nu se întâlnesc numere.
  • double atof (str) Stabilește ca ASCII să plutească, convertește str la valoarea dublă echivalentă. 0.0 este returnat dacă primul caracter nu este un număr sau nu se întâlnesc numere.
  • long int atol (str) Indică ASCII în long int, Convertește str în valoarea întregului echivalent lung. 0 este returnat dacă primul caracter nu este un număr sau nu se întâlnesc numere.

Următorul program demonstrează funcția atoi ():

#include int main(){char *string_id[10];int ID;printf("Enter a number: ");gets(string_id);ID = atoi(string_id);printf("you enter %d ",ID);return 0;}

Ieșire:

Enter a number: 221348you enter 221348
  • O declarație a indicatorului de șir, cum ar fi char * string = "language" este o constantă și nu poate fi modificată.

rezumat

  • Un șir este o secvență de caractere stocate într-o matrice de caractere.
  • Un șir este un text încadrat între ghilimele duble.
  • Un caracter precum „d” nu este un șir și este indicat prin ghilimele unice.
  • „C” oferă funcții standard de bibliotecă pentru a manipula șirurile dintr-un program. Manipulatoarele de șiruri sunt stocate în fișierul antet .
  • Un șir trebuie declarat sau inițializat înainte de a fi folosit într-un program.
  • Există diferite funcții de intrare și ieșire, fiecare dintre ele are caracteristicile sale.
  • Nu uitați să includeți biblioteca de șiruri pentru a lucra cu funcțiile sale
  • Putem converti șirul în număr prin atoi (), atof () și atol () care sunt foarte utile pentru procesele de codificare și decodare.
  • Putem manipula diferite șiruri definind o serie de șiruri în C.