Verschil tussen strlen() en sizeof() voor string in C

Wat is strlen()

strlen() is een functie om de lengte van een string te vinden. Het telt het totale aantal tekens dat in een string wordt gepresenteerd, waarbij het nulteken wordt geëlimineerd. Het totale aantal tekens in de tekenreeks omvat alfabetten, speciale tekens en cijfers, met spaties.

Wat is sizeof()

De sizeof() is een functie die wordt gebruikt om de grootte van de operand te berekenen. Het retourneert de grootte van een bepaalde variabele. Deze functie kan op elk gegevenstype worden toegepast, inclusief primitieve typen zoals geheel getal en aanwijzer typen, drijvende-kommatypen, structuur of vereniging. De uitvoer van het programma dat sizeof() bevat, kan verschillend zijn op het 32-bits systeem en het 64-bits systeem.

BELANGRIJKSTE VERSCHILLEN

  • De Strlen-methode wordt gebruikt om de lengte van een array te vinden, terwijl de sizeof()-methode wordt gebruikt om de werkelijke gegevensgrootte te vinden.
  • Strlen() telt het aantal tekens in een tekenreeks, terwijl sizeof() de grootte van een operand retourneert.
  • Strlen() zoekt naar de nulwaarde van de variabele, maar sizeof() geeft niets om de variabelewaarde.
  • De retourwaarde in strlen() is long int, terwijl de retourwaarde in sizeof() een niet-ondertekende int is.

Syntaxis van strlen()

strcount = strlen(my_string); 

Hier is my_string een karakterarrayvariabele.

Voorbeeld van strlen()

In het onderstaande C-programma hebben we een stringvariabele van het type char gedeclareerd. De Strng-variabele wordt doorgegeven als argument van de functie strlen() om de lengte ervan te vinden snaar.

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

Output:

Length of given string is: 7

Syntaxis van sizeof()

Syntaxis 1)

groottevan(type): Type= waarnaar wordt verwezen

Voorbeeld van sizeof(type):

In de onderstaande code geeft &type het adres van de variabele (double X). Het wordt verhoogd met 1, wat het adres oplevert waar u de volgende variabele van het type x kunt opslaan.

Door x in char* te typen en het verschil te nemen, kunt u het totale aantal variabelen van het type char kennen dat in het geheugen is opgeslagen. We hebben getchar() gebruikt om karakters te lezen.

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

output:

8

Syntaxis 2)

sizeof(variabelenaam): Variabelenaam= naam van de variabele waarvan u de grootte wilt bepalen.

In het onderstaande C-programma drukken we het gegevenstype size char af. De Printf-instructie bevat de functie sizeof met argument char.

Voorbeeld van sizeof(variabelenaam):

#include<stdio.h>
int main()
{
	printf("sizeof(char) = %d\n\n", sizeof(char));
		
	return 0;
}

Output:

sizeof(char) = 1

Syntaxis 3)

groottevan(uitdrukking): Expressie= Expressie die u moet evalueren.

Voorbeeld van sizeof(expressie):

In het onderstaande programma berekenen en afdrukken we eerst de grootte van de variabele. Hierna evalueren we de expressie, slaan deze op in variabele a en geven het resultaat weer in de printf-instructie.

#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;
}

Output:

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

Verschil tussen strlen() en sizeof()

Hier zijn de belangrijke verschillen tussen strlen() en sizeof():

Verschil tussen strlen() en sizeof()

Strlen() De grootte van()
Strlen() is een vooraf gedefinieerde functie, die is gedefinieerd in een headerbestand dat bekend staat als string.h. Sizeof() is een unaire operator of compile-time-expressie die de hoeveelheid geheugen berekent die wordt ingenomen door a variabele.
Deze methode wordt gebruikt om de lengte van een reeks tekenreeksen of tekens te vinden. Deze methode wordt gebruikt om de werkelijke grootte van de gegevens (toegewezen) in bytes te vinden.
Het telt het aantal tekens in een tekenreeks en elimineert null-waarden. Het retourneert de grootte van een operand, niet de tekenreekslengte (inclusief nulwaarden).
Het wijst geheugen toe tijdens de runtime en zoekt naar de nulwaarde van de variabele. Sizeof() geeft niets om de variabelewaarde.
De functie Strlen() werkt alleen met tekenreeksen De functie Sizeof() retourneert de hoeveelheid geheugen die is toegewezen in bytes.
De retourwaarde in strlen() is long int. De geretourneerde waarde in sizeof() is een niet-ondertekende int.
Er is slechts één syntaxis van strlen() en dat is int strlen(const char *str); Er zijn drie syntaxis van sizeof() 1) sizeof(type), 2) sizeof(variabelenaam) en 3) sizeof(expressie):