Rozdíl mezi strlen () a sizeof () pro řetězec v C

Obsah:

Anonim

Co je strlen ()

strlen () je funkce pro zjištění délky řetězce. Počítá celkem znaků, které jsou uvedeny v řetězci, čímž se eliminuje nulový znak. Celkový počet znaků v řetězci zahrnuje abecedy, speciální znaky a čísla s mezerami.

V tomto rozdílu mezi strlen () a sizeof () pro řetězec v tutoriálu C se naučíte:

  • Co je strlen ()
  • Co je sizeof ()
  • Syntaxe strlen ()
  • Syntaxe sizeof ()
  • Rozdíl mezi strlen () a sizeof ()

Co je sizeof ()

Sizeof () je funkce, která se používá k výpočtu velikosti operandu. Vrátí velikost konkrétní proměnné. Tuto funkci lze použít na jakýkoli datový typ, který obsahuje primitivní typy, jako jsou typy celých čísel a ukazatelů, typy s plovoucí desetinnou čárkou, struktura nebo sjednocení. Výstup programu obsahujícího sizeof () se může lišit v 32bitovém systému a 64bitovém systému.

KLÍČOVÉ ROZDÍLY:

  • Strlenova metoda se používá k nalezení délky pole, zatímco metoda sizeof () se používá k nalezení skutečné velikosti dat.
  • Strlen () počítá počet znaků v řetězci, zatímco sizeof () vrací velikost operandu.
  • Strlen () hledá nulovou hodnotu proměnné, ale sizeof () se nestará o hodnotu proměnné.
  • Návratová hodnota v strlen () je dlouhá int, na druhou stranu návratová hodnota v sizeof () je nepodepsaná int.

Syntaxe strlen ()

strcount = strlen(my_string);

Zde je my_string proměnná pole znaků.

Příklad strlen ()

V níže uvedeném programu C jsme deklarovali řetězcovou proměnnou typu char. Proměnná Strng je předána jako argument funkce strlen () k nalezení délky řetězce.

#include#includeint main(){char strng[] = "January";printf("Length of given string is: %lu\n", strlen(strng));}

Výstup:

Length of given string is: 7

Syntaxe sizeof ()

Syntax 1)

sizeof (type): Type = odkazovaný typ

Příklad sizeof (type):

V níže uvedeném kódu udává & type adresu proměnné (double x). Je zvýšen o 1, což dává adresu, kam můžete uložit další proměnnou typu x.

Typecasting x do char * a převzetí rozdílu vám umožní znát celkový počet proměnných typu char uložených v paměti. Ke čtení znaku jsme použili getchar ().

#include#define my_sizeof(type) (char *)(&type+1)-(char*)(&type)int main(){double x;printf("%ld", my_sizeof(x));getchar();return 0;}

výstup:

8

Syntaxe 2)

sizeof (název proměnné): Název proměnné = název proměnné, pro kterou chcete určit velikost.

V níže uvedeném programu C tiskneme datový typ velikosti char. Printf prohlášení obsahuje sizeof funkce s argumentem char.

Příklad sizeof (název proměnné):

#includeint main(){printf("sizeof(char) = %d\n\n", sizeof(char));return 0;}

Výstup:

sizeof(char) = 1

Syntax 3)

sizeof (expression): Expression = Výraz, který musíte vyhodnotit.

Příklad sizeof (výraz):

V níže uvedeném programu nejprve vypočítáme a vytiskneme velikost proměnné. Poté vyhodnotíme výraz, uložíme jej do proměnné a a výsledek zobrazíme v příkazu printf.

#includeint main() {char p = 'S';double q = 4.65;printf("Size of variable p : %d\n",sizeof(p));printf("Size of an expression : %d\n",sizeof(p+q));int a = (int)(p+q);printf("Size of explicitly converted expression : %d\n",sizeof(a));return 0;}

Výstup:

Size of variable p : 1Size of an expression : 8Size of explicitly converted expression : 4

Rozdíl mezi strlen () a sizeof ()

Zde jsou důležité rozdíly mezi strlen () a sizeof ():

Strlen () Velikost()
Strlen () je předdefinovaná funkce, která je definována v hlavičkovém souboru známém jako string.h. Sizeof () je unární operátor nebo výraz v době kompilace, který vypočítává velikost paměti obsazené proměnnou.
Tato metoda se používá k vyhledání délky pole řetězce nebo znaku. Tato metoda se používá k vyhledání skutečné velikosti dat (přidělených) v bajtech.
Počítá počet znaků v řetězci a vylučuje nulové hodnoty. Vrátí velikost operandu, nikoli délku řetězce (včetně hodnot null).
Přiděluje paměť za běhu a hledá nulovou hodnotu proměnné. Sizeof () se nestará o hodnotu proměnné.
Funkce Strlen () funguje pouze s řetězci znaků Funkce Sizeof () vrací množství paměti přidělené v bajtech.
Návratová hodnota v strlen () je dlouhá int. Návratová hodnota v sizeof () je unsigned int.
Existuje pouze jedna syntaxe strlen (), která je int strlen (const char * str); Existují tři syntaxe sizeof () 1) sizeof (type), 2) sizeof (název-proměnné) a 3) sizeof (výraz):