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)
{
intjá=0;
zatímco(p[já] ! = ' 0')já++;
vrátit sejá;
}
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 já se zvyšuje o 1 v každé iteraci cyklu while. Když smyčka skončí, hodnota já 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.hSyntax:
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ší.