Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Industrial programming >> Langue C

strlen() vs sizeof() en C : Comprendre leurs différences et usage correct

Qu'est-ce que strlen() ?

En C, strlen() retourne le nombre de caractères dans une chaîne terminée par un caractère nul, en excluant le '\0' final. Il compte les lettres, chiffres, symboles et espaces.

Cet article explique le rôle de strlen(), sizeof() et pourquoi ils se comportent différemment.

Qu'est-ce que sizeof() ?

L'opérateur sizeof donne la taille, en octets, de son opérande. Il est évalué à la compilation pour les types statiques et à l'exécution pour les tableaux à longueur variable. Il s'applique à tous les types de données C, y compris les primitives, pointeurs, structures et unions. Le résultat est de type size_t, un type entier non signé garanti assez grand pour contenir la taille du plus grand objet.

Comme la taille des types comme int ou double peut varier entre systèmes 32 et 64 bits, sizeof assure la portabilité.

Différences clés

Syntaxe de strlen()

size_t length = strlen(my_string);

Ici, my_string est un tableau de caractères ou un pointeur vers une chaîne terminée par nul.

Exemple de strlen()

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

Sortie :

Length of given string is: 7

Syntaxe de sizeof()

1) sizeof(type)

sizeof(type) donne la taille du type spécifié.

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

Sortie :

8

2) sizeof(variable)

Passez un nom de variable pour obtenir son empreinte mémoire.

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

Sortie :

sizeof(char) = 1

3) sizeof(expression)

Évalue la taille du type d'une expression sans calculer sa valeur.

#include <stdio.h>
int main() {
    char p = 'S';
    double q = 4.65;
    printf("Size of variable p : %zu\n", sizeof(p));
    printf("Size of an expression : %zu\n", sizeof(p+q));
    int a = (int)(p+q);
    printf("Size of explicitly converted expression : %zu\n", sizeof(a));
    return 0;
}

Sortie :

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

Comparaison visuelle

strlen() vs sizeof() en C : Comprendre leurs différences et usage correct

Voici un résumé côte à côte des deux constructions :

Caractéristiquestrlen()sizeof()
Fichier d'en-têtestring.hAucun requis (opérateur intégré)
ButCalculer la longueur de chaîne (hors nul)Déterminer la taille mémoire d'un type ou variable
Type de retoursize_tsize_t
Moment d'évaluationExécution (peut parcourir la chaîne)Compilation (sauf VLA)
Applicable àSeulement tableaux de caractères ou pointeurs vers chaînes terminées par nulTous les types de données et expressions

Quand utiliser lequel

Suivre ces directives garantit un code C efficace, portable et maintenable.

Langue C

  1. Amiante vs Fibre de Verre : Différences Clés, Utilisations et Considérations de Sécurité
  2. Structures vs Unions en C : Guide pratique
  3. C# vs C++ : Comparaison claire des fonctionnalités, performances et cas d'usage
  4. C vs C++ : Différences clés et quand choisir chacun
  5. C vs Java : Comparatif complet des fonctionnalités, de l'histoire et des applications
  6. Python vs JavaScript : Différences Clés, Fonctionnalités et Quand Choisir Chaque Langage
  7. Comprendre les Moteurs DC vs AC : Différences Clés et Guide d'Achat
  8. Brasage vs Soudure : Différences Clés Expliquées
  9. Moteurs 2 temps vs 4 temps : différences clés expliquées