Unterschied zwischen strlen() und sizeof() für String in C
Was ist strlen()?
strlen() ist eine Funktion zum Ermitteln der Länge einer Zeichenfolge. Sie zählt die Gesamtzahl der in einer Zeichenfolge enthaltenen Zeichen und eliminiert das Nullzeichen. Die Gesamtzahl der Zeichen in der Zeichenfolge umfasst Alphabete, Sonderzeichen und Zahlen sowie Leerzeichen.
Was ist sizeof()
sizeof() ist eine Funktion, die zur Berechnung der Größe ihres Operanden verwendet wird. Sie gibt die Größe einer bestimmten Variable zurück. Diese Funktion kann auf jeden Datentyp angewendet werden, der primitive Typen wie Integer und Zeigertypen, Gleitkommatypen, Struktur oder Union. Die Ausgabe des Programms, das sizeof() enthält, kann auf dem 32-Bit-System und dem 64-Bit-System unterschiedlich sein.
WICHTIGSTE UNTERSCHIEDE
- Die Strlen-Methode wird verwendet, um die Länge eines Arrays zu ermitteln, während die sizeof()-Methode verwendet wird, um die tatsächliche Größe der Daten zu ermitteln.
- Strlen() zählt die Anzahl der Zeichen in einem String, während sizeof() die Größe eines Operanden zurückgibt.
- Strlen() sucht nach dem Nullwert der Variablen, aber sizeof() kümmert sich nicht um den Variablenwert.
- Der Rückgabewert in strlen() ist long int, der Rückgabewert in sizeof() ist dagegen unsigned int.
Syntax von strlen()
strcount = strlen(my_string);
Hier ist my_string eine Zeichen-Array-Variable.
Beispiel für strlen()
Im folgenden C-Programm haben wir eine String-Variable vom Typ char deklariert. Die Strng-Variable wird als Argument der Funktion strlen() übergeben, um deren Länge zu ermitteln Schnur.
#include<stdio.h> #include<string.h> int main() { char strng[] = "January"; printf("Length of given string is: %lu\n", strlen(strng)); }
Ausgang:
Length of given string is: 7
Syntax von sizeof()
Syntax 1)
Größe von (Typ): Typ= referenzierter Typ
Beispiel für sizeof(type):
Im folgenden Code gibt &type die Adresse der Variable (double x) an. Sie wird um 1 erhöht, was die Adresse angibt, unter der Sie die nächste Variable vom Typ x speichern können.
Wenn Sie x in char* umwandeln und die Differenz bilden, können Sie die Gesamtzahl der im Speicher gespeicherten Variablen vom Typ char ermitteln. Wir haben getchar() zum Lesen von Zeichen verwendet.
#include<stdio.h> #define my_sizeof(type) (char *)(&type+1)-(char*)(&type) int main() { double x; printf("%ld", my_sizeof(x)); getchar(); return 0; }
Ausgabe:
8
Syntax 2)
sizeof(Variablenname): Variablenname= Name der Variablen, deren Größe Sie bestimmen möchten.
Im folgenden C-Programm drucken wir den Datentyp size char. Die Printf-Anweisung enthält die Funktion sizeof mit dem Argument char.
Beispiel für sizeof(Variablenname):
#include<stdio.h> int main() { printf("sizeof(char) = %d\n\n", sizeof(char)); return 0; }
Ausgang:
sizeof(char) = 1
Syntax 3)
sizeof(expression): Ausdruck= Ausdruck, den Sie auswerten müssen.
Beispiel für sizeof(expression):
Im folgenden Programm berechnen und drucken wir zunächst die Größe der Variablen. Danach werten wir den Ausdruck aus, speichern ihn in der Variablen a und zeigen das Ergebnis in der printf-Anweisung an.
#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; }
Ausgang:
Size of variable p : 1 Size of an expression : 8 Size of explicitly converted expression : 4
Unterschied zwischen strlen() und sizeof()
Hier sind die wichtigen Unterschiede zwischen strlen() und sizeof():
Strlen() | Größe von() |
---|---|
Strlen() ist eine vordefinierte Funktion, die in einer Header-Datei namens string.h definiert ist. | Sizeof() ist ein unärer Operator oder ein Ausdruck zur Kompilierungszeit, der die Menge des von einem Variable. |
Diese Methode wird verwendet, um die Länge eines Arrays aus Zeichenfolgen oder Zeichen zu ermitteln. | Diese Methode wird verwendet, um die tatsächliche (zugewiesene) Datengröße in Bytes zu ermitteln. |
Es zählt die Anzahl der Zeichen in einer Zeichenfolge und eliminiert Nullwerte. | Es gibt die Größe eines Operanden zurück, nicht die Zeichenfolgenlänge (einschließlich Nullwerte). |
Es reserviert zur Laufzeit Speicher und sucht nach dem Nullwert der Variablen. | Sizeof() kümmert sich nicht um den Variablenwert. |
Die Funktion Strlen() funktioniert nur mit Zeichenfolgen | Die Funktion Sizeof() gibt die Menge des zugewiesenen Speichers in Bytes zurück. |
Der Rückgabewert in strlen() ist long int. | Der Rückgabewert in sizeof() ist unsigned int. |
Es gibt nur eine Syntax von strlen(), nämlich int strlen(const char *str); | Es gibt drei Syntaxen von sizeof(): 1) sizeof(type), 2) sizeof(variable-name) und 3) sizeof(expression): |