Délka řetězce v jazyce C.

String Length C Language



Řetězec v jazyce C je pole znaků, které je ukončeno znakem null ( 0). Délka řetězce je počet znaků v řetězci. V délce řetězce „ 0“ se znak nepočítá.







V příkladu uvedeném výše je délka řetězce p je 6.



V tomto tutoriálu si nejprve ukážeme, jak používat a uživatelem definovaná funkce pro výpočet délky řetězce a poté vám ukážeme vestavěnou funkci knihovny strlen () . Ukážeme vám také použití velikost operátor pro řetězcové literály.



Délka řetězce pomocí funkce definované uživatelem

Můžete napsat uživatelem definovanou funkci, která vrací počet znaků v řetězci.





// Příklad1.c
#zahrnout

intstringLength(char *p)
{
int=0;

zatímco(p[] ! = ' 0')++;

vrátit se;
}

inthlavní()
{
charp[30]= 'TĚTIVA';

printf ('Délka řetězce str je => %d n',stringLength(p));

vrátit se 0;
}

Zde iterujeme smyčku while od i = 0 dokud nenarazíme na ' 0' charakter. Hodnota se zvyšuje o 1 v každé iteraci cyklu while. Když smyčka skončí, hodnota je délka řetězce.



Délka řetězce pomocí vestavěné funkce knihovny

Vestavěná funkce knihovny strlen () lze také použít k určení délky řetězce.

funkce strlen ():

Soubor záhlaví:

tětiva.h

Syntax:

velikost_t strlen (konst char *p)

Argument: Tato funkce přebírá argument ukazatele typu na char.

Návratová hodnota: Tato funkce vrací délku řetězce p . Všimněte si, že velikost_t je pouze alias celé číslo bez znaménka.

// Příklad2.c
#zahrnout
#zahrnout

inthlavní()
{
charstr1[30]='STRING ARRAY';
char *str2;
char *str3;

str2=str1;
str3= 'STRING POINTER';

printf ('Délka řetězce str1 je => %ld n', strlen (str1));
printf ('Délka řetězce str2 je => %ld n', strlen (str2));
printf ('Délka řetězce str3 je => %ld n', strlen (str3));
printf („Délka řetězce“STRING LITERALS'is => %ld n', strlen ('STRING LITERALS'));

vrátit se 0;
}

Zde předáme řetězcové pole, ukazatel na řetězec a doslovný řetězec funkci strlen a funkce vrátí délku řetězce.

Délka řetězce pomocí sizeof Operator

Můžeme také použít velikost operátor pro délku řetězce (pouze pro doslovný řetězec). Musíme však odečíst 1 od hodnoty vrácené tímto operátorem, protože také počítá znak ‘ 0’. U pole a ukazatele operátor sizeof vrací přidělenou velikost pole a ukazatele.

//Příklad3.c
#zahrnout

inthlavní()
{
charstr1[30] = 'TĚTIVA';
char *str2=str1;

printf ('Délka 'TĚTIVA'is => %d n',(velikost('TĚTIVA') - 1));
printf ('Přidělená velikost pole str1 je => %d n',velikost(str1));
printf ('Velikost ukazatele str2 je => %d n',velikost(str2));

vrátit se 0;
}

Zde v řádku č. 9 předáme řetězcový doslovný STRING a získáme velikost včetně znaku „ 0“. Odečteme tedy 1 a získáme skutečnou velikost řetězce.

Když předáme pole operátorovi sizeof, vrátí přidělenou velikost pole, což je 30, a při předávání ukazatele znaku vrátí velikost ukazatele.

Závěr

V tomto tutoriálu jsme vám tedy ukázali, jak lze délku řetězce vypočítat různými způsoby. Ve svém kódu můžete použít libovolnou metodu, která je pro vás nejvhodnější.