Différence entre strlen() et sizeof() pour une chaîne en C
Qu'est-ce que strlen()
strlen() est une fonction permettant de trouver la longueur d'une chaîne. Il compte le nombre total de caractères présentés dans une chaîne, éliminant le caractère nul. Le nombre total de caractères dans la chaîne comprend les alphabets, les caractères spéciaux et les chiffres, avec des espaces vides.
Qu'est-ce que sizeof()
sizeof() est une fonction utilisée pour calculer la taille de son opérande. Il renvoie la taille d'une variable particulière. Cette fonction peut être appliquée à n'importe quel type de données, contenant des types primitifs comme entier et types de pointeurs, types à virgule flottante, structure ou union. La sortie du programme contenant sizeof() peut être différente sur le système 32 bits et le système 64 bits.
DIFFÉRENCES CLÉS
- La méthode Strlen est utilisée pour trouver la longueur d'un tableau tandis que la méthode sizeof() est utilisée pour trouver la taille réelle des données.
- Strlen() compte le nombre de caractères dans une chaîne tandis que sizeof() renvoie la taille d'un opérande.
- Strlen() recherche la valeur nulle de la variable mais sizeof() ne se soucie pas de la valeur de la variable.
- La valeur de retour dans strlen() est un entier long, tandis que la valeur de retour dans sizeof() est un entier non signé.
Syntaxe de strlen()
strcount = strlen(my_string);
Ici, my_string est une variable de tableau de caractères.
Exemple de strlen()
Dans le programme C ci-dessous, nous avons déclaré une variable chaîne de type char. La variable Strng est passée comme argument de la fonction strlen() pour trouver la longueur de un magnifique.
#include<stdio.h> #include<string.h> int main() { char strng[] = "January"; printf("Length of given string is: %lu\n", strlen(strng)); }
Sortie :
Length of given string is: 7
Syntaxe de sizeof()
Syntaxe 1)
taille de (type): Type= type référencé
Exemple de taille de (type) :
Dans le code ci-dessous, &type donne l'adresse de la variable (double x). Il est incrémenté de 1 qui donne l'adresse où vous pourrez stocker la prochaine variable de type x.
Transtyper x en char* et prendre la différence vous permettra de connaître le nombre total de variables de type char stockées en mémoire. Nous avons utilisé getchar() pour lire le caractère.
#include<stdio.h> #define my_sizeof(type) (char *)(&type+1)-(char*)(&type) int main() { double x; printf("%ld", my_sizeof(x)); getchar(); return 0; }
sortie:
8
Syntaxe 2)
sizeof(nom-variable): Nom de la variable = nom de la variable dont vous souhaitez déterminer la taille.
Dans le programme C ci-dessous, nous imprimons le type de données size char. L'instruction Printf contient la fonction sizeof avec l'argument char.
Exemple de sizeof(nom-variable) :
#include<stdio.h> int main() { printf("sizeof(char) = %d\n\n", sizeof(char)); return 0; }
Sortie :
sizeof(char) = 1
Syntaxe 3)
taille de (expression): Expression= Expression que vous devez évaluer.
Exemple de sizeof(expression) :
Dans le programme ci-dessous, nous calculons et imprimons d'abord la taille de la variable. Après cela, nous évaluons l'expression, la stockons dans la variable a et affichons le résultat dans l'instruction 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; }
Sortie :
Size of variable p : 1 Size of an expression : 8 Size of explicitly converted expression : 4
Différence entre strlen() et sizeof()
Voici les différences importantes entre strlen() et sizeof() :
Strlen() | Taille de() |
---|---|
Strlen() est une fonction prédéfinie, définie dans un fichier d'en-tête appelé string.h. | Sizeof() est un opérateur unaire ou une expression de compilation qui calcule la quantité de mémoire occupée par un variable. |
Cette méthode est utilisée pour trouver la longueur d’un tableau de chaîne ou de caractères. | Cette méthode est utilisée pour trouver la taille réelle des données (allouées) en octets. |
Il compte le nombre de caractères dans une chaîne en éliminant les valeurs nulles. | Il renvoie la taille d'un opérande, pas la longueur de la chaîne (y compris les valeurs nulles). |
Il alloue de la mémoire au moment de l'exécution et recherche la valeur nulle de la variable. | Sizeof() ne se soucie pas de la valeur de la variable. |
La fonction Strlen() ne fonctionne qu'avec des chaînes de caractères | La fonction Sizeof() renvoie la quantité de mémoire allouée en octets. |
La valeur de retour dans strlen() est un entier long. | La valeur de retour dans sizeof() est un entier non signé. |
Il n'y a qu'une seule syntaxe de strlen() qui est int strlen(const char *str); | Il existe trois syntaxes de sizeof() 1) sizeof(type), 2) sizeof(variable-name) et 3) sizeof(expression) : |