Programare C

Lungimea șirului în limbaj C

Lungimea șirului în limbaj C
Un șir în limbajul C este o matrice de caractere care se termină cu un caracter nul (\ 0). Lungimea șirului este numărul de caractere dintr-un șir. În lungimea șirului „\ 0”, un caracter nu este numărat.

În exemplul prezentat mai sus, lungimea șirului str este 6.

În acest tutorial, mai întâi, vom arăta cum să utilizați un funcție definită de utilizator pentru a calcula lungimea unui șir și apoi vă vom arăta o funcție de bibliotecă încorporată strlen (). Vă arătăm, de asemenea, utilizările mărimea operator pentru literele șirului.

Lungimea șirului folosind funcția definită de utilizator

Puteți scrie o funcție definită de utilizator care returnează numărul de caractere dintr-un șir.

// Exemplul 1.c
#include
int stringLength (char * str)

int i = 0;
while (str [i] != '\ 0') i ++;
retur i;

int main ()

char str [30] = "STRING";
printf ("Lungimea șirului str este =>% d \ n", lungimea șirului (str));
retur 0;

Aici, iterăm bucla while de la i = 0 până când nu întâlnim „\ 0” caracter. Valoarea a eu este mărită cu 1 în fiecare iterație a buclei while. Când bucla se termină, valoarea lui eu este lungimea șirului.

Lungimea șirului folosind funcția de bibliotecă încorporată

Funcția de bibliotecă încorporată strlen () poate fi folosit și pentru a determina lungimea șirului.

funcția strlen ():

Fișier antet:

şir.h

Sintaxă:

size_t strlen (const char * str)

Argument: Această funcție ia un argument de tip pointer la char.

Valoare returnată: Această funcție returnează lungimea șirului str. Rețineți că mărime_t este doar un alias al unui întreg nesemnat.

// Exemplul 2.c
#include
#include
int main ()

char str1 [30] = "STRING ARRAY";
char * str2;
char * str3;
str2 = str1;
str3 = "POINTER STRING";
printf ("Lungimea șirului str1 este =>% ld \ n", strlen (str1));
printf ("Lungimea șirului str2 este =>% ld \ n", strlen (str2));
printf ("Lungimea șirului str3 este =>% ld \ n", strlen (str3));
printf ("Lungimea șirului" STRING LITERALS "este =>% ld \ n", strlen ("STRING LITERALS"));
retur 0;

Aici, trecem matricea de șiruri, pointerul șirului și literalul șirului la funcția strlen, iar funcția returnează lungimea șirului.

Lungimea șirului Utilizând dimensiunea operatorului

De asemenea, putem folosi mărimea operator pentru lungimea șirului (numai pentru literalul șirului). Dar, trebuie să scădem 1 din valoarea returnată de acest operator, deoarece contează și caracterul '\ 0'. Pentru tablou și pointer, operatorul sizeof returnează dimensiunea alocată a tabloului și respectiv a indicatorului.

// Exemplul 3.c
#include
int main ()

char str1 [30] = "STRING";
char * str2 = str1;
printf ("Lungimea" STRING "este =>% d \ n", (sizeof ("STRING") - 1));
printf ("Dimensiunea alocată a matricei str1 este =>% d \ n", sizeof (str1));
printf ("Dimensiunea indicatorului str2 este =>% d \ n", sizeof (str2));
retur 0;

Aici, în Linia nr. 9, trecem șirul literal „STRING” și obținem dimensiunea, inclusiv caracterul '\ 0'. Deci, scădem 1 și obținem dimensiunea reală a șirului.

Când trecem un tablou operatorului sizeof, acesta returnează dimensiunea alocată a tabloului, care este 30, iar la trecerea unui pointer de caractere, returnează dimensiunea pointerului.

Concluzie

Deci, în acest tutorial, v-am arătat cum poate fi calculată lungimea șirului în diferite moduri. Puteți utiliza în codul dvs. orice metodă este cea mai potrivită pentru dvs.

Instalați cel mai recent joc de strategie OpenRA pe Ubuntu Linux
OpenRA este un motor de jocuri de strategie în timp real Libre / Free care recreează primele jocuri Westwood, cum ar fi clasicul Command & Conquer: Re...
Instalați cel mai recent Dolphin Emulator pentru Gamecube și Wii pe Linux
Emulatorul Dolphin vă permite să jucați jocurile alese de Gamecube și Wii pe computerele personale Linux (PC). Fiind un emulator de joc liber disponi...
Cum se folosește GameConqueror Cheat Engine în Linux
Articolul acoperă un ghid despre utilizarea sistemului de înșelăciune GameConqueror în Linux. Mulți utilizatori care joacă jocuri pe Windows folosesc ...