Rozdíl mezi strlen() a sizeof() pro řetězec v C
Co je strlen()
strlen() je funkce pro zjištění délky řetězce. Počítá celkový počet znaků, které jsou uvedeny v řetězci, čímž se eliminuje znak null. Celkový počet znaků v řetězci zahrnuje abecedy, speciální znaky a čísla s mezerami.
Co je sizeof()
Sizeof() je funkce, která se používá k výpočtu velikosti jejího operandu. Vrací velikost konkrétní proměnné. Tuto funkci lze použít na jakýkoli datový typ obsahující primitivní typy jako integer a typy ukazatelů, typy s plovoucí desetinnou čárkou, struktura nebo sjednocení. Výstup programu obsahujícího sizeof() se může na 32bitovém systému a na 64bitovém systému lišit.
KLÍČOVÉ ROZDÍLY
- Metoda Strlen 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 o hodnotu proměnné nestará.
- Návratová hodnota ve strlen() je long int, na druhé straně návratová hodnota ve sizeof() je int bez znaménka.
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() pro zjištění délky šňůra.
#include<stdio.h> #include<string.h> int main() { char strng[] = "January"; printf("Length of given string is: %lu\n", strlen(strng)); }
Výstup:
Length of given string is: 7
Syntaxe sizeof()
Syntaxe 1)
velikost (typ): Typ= odkazovaný typ
Příklad sizeof(type):
V níže uvedeném kódu udává &type adresu proměnné (dvojité x). Je zvýšena o 1, což udává adresu, kam můžete uložit další proměnnou typu x.
Přetypování 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<stdio.h> #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é, u které chcete určit velikost.
V níže uvedeném programu C tiskneme datový typ size char. Příkaz Printf obsahuje funkci sizeof s argumentem char.
Příklad sizeof(název-proměnné):
#include<stdio.h> int main() { printf("sizeof(char) = %d\n\n", sizeof(char)); return 0; }
Výstup:
sizeof(char) = 1
Syntaxe 3)
sizeof(výraz): Výraz= 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.
#include<stdio.h> int 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 : 1 Size of an expression : 8 Size 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é a proměnlivý. |
Tato metoda se používá k nalezení délky pole řetězců nebo znaků. | Tato metoda se používá k nalezení skutečné velikosti dat (přidělených) v bajtech. |
Počítá počet znaků v řetězci a eliminuje hodnoty null. | Vrací 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() pracuje pouze se znakovými řetězci | Funkce Sizeof() vrací množství paměti alokované v bajtech. |
Návratová hodnota v strlen() je long int. | Návratová hodnota ve sizeof() je bez znaménka 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): |