Ve výše uvedeném příkladu délka řetězce str je 6.
V tomto kurzu si nejprve ukážeme, jak používat a uživatelsky definovaná funkce vypočítat délku řetězce a poté vám ukážeme vestavěnou knihovní funkci 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říklad 1.C#zahrnout
int stringLength (char * str)
int i = 0;
while (str [i] != '\ 0') i ++;
návrat i;
int main ()
char str [30] = "STRING";
printf ("Délka řetězce str je =>% d \ n", stringLength (str));
návrat 0;
Zde iterujeme smyčku while i = 0 dokud nenarazíme na '\ 0' charakter. Hodnota i se zvyšuje o 1 v každé iteraci smyčky while. Když smyčka končí, hodnota i je délka řetězce.
Délka řetězce pomocí funkce vestavěné knihovny
Integrovaná funkce knihovny strlen () lze také použít k určení délky řetězce.
funkce strlen ():
Soubor záhlaví:
tětiva.hSyntax:
size_t strlen (const char * str)Argument: Tato funkce přebírá argument ukazatele typu na char.
Návratová hodnota: Tato funkce vrací délku řetězce str. Všimněte si, že size_t je jen alias celého čísla bez znaménka.
// Příklad 2.C#zahrnout
#zahrnout
int main ()
char str1 [30] = "Řetězec řetězce";
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 "je =>% ld \ n", strlen ("STRING LITERALS"));
návrat 0;
Zde předáme řetězcové pole, řetězcový ukazatel a řetězcový literál 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 řetězcový literál). Ale musíme odečíst 1 od hodnoty vrácené tímto operátorem, protože také počítá znak '\ 0'. Pro pole a ukazatel vrátí operátor sizeof přidělenou velikost pole a ukazatele.
// Příklad 3.C#zahrnout
int main ()
char str1 [30] = "STRING";
char * str2 = str1;
printf ("Délka" STRING "je =>% d \ n", (sizeof ("STRING") - 1));
printf ("Přidělená velikost pole str1 je =>% d \ n", sizeof (str1));
printf ("Velikost ukazatele str2 je =>% d \ n", sizeof (str2));
návrat 0;
Tady v řádku č. 9 předáme řetězcový literál „STRING“ a dostaneme velikost včetně znaku „\ 0“. Odečteme tedy 1 a získáme skutečnou velikost řetězce.
Když předáme pole operátoru sizeof, vrátí přidělenou velikost pole, která je 30, a při předávání znakového ukazatele vrátí velikost ukazatele.
Závěr
V tomto výukovém programu 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ší.