Î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.hSintaxă:
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.