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():

Rozdíl 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):