Namespaces
Variants

strlen, strnlen_s

From cppreference.net
< c ‎ | string ‎ | byte
Défini dans l'en-tête <string.h>
size_t strlen ( const char * str ) ;
(1)
size_t strnlen_s ( const char * str, size_t strsz ) ;
(2) (depuis C11)
1) Retourne la longueur de la chaîne d'octets terminée par un caractère nul donnée, c'est-à-dire le nombre de caractères dans un tableau de caractères dont le premier élément est pointé par str jusqu'au premier caractère nul, sans l'inclure.
Le comportement est indéfini si str n'est pas un pointeur vers une chaîne d'octets terminée par un caractère nul.
2) Identique à (1) , sauf que la fonction retourne zéro si str est un pointeur nul et retourne strsz si le caractère nul n'a pas été trouvé dans les premiers strsz octets de str .
Le comportement est indéfini si str n'est pas un pointeur vers une chaîne d'octets terminée par un caractère nul et si strsz est supérieur à la taille de ce tableau de caractères.
Comme pour toutes les fonctions avec vérification des limites, strnlen_s n'est garantie d'être disponible que si __STDC_LIB_EXT1__ est défini par l'implémentation et si l'utilisateur définit __STDC_WANT_LIB_EXT1__ à la constante entière 1 avant d'inclure <string.h> .

Table des matières

Paramètres

str - pointeur vers la chaîne d'octets terminée par un caractère nul à examiner
strsz - nombre maximum de caractères à examiner

Valeur de retour

1) La longueur de la chaîne d'octets terminée par un caractère nul str .
2) La longueur de la chaîne d'octets terminée par un caractère nul str en cas de succès, zéro si str est un pointeur nul, strsz si le caractère nul n'a pas été trouvé.

Notes

strnlen_s et wcsnlen_s sont les seules fonctions à vérification des limites qui n'invoquent pas le gestionnaire de contraintes d'exécution. Ce sont des fonctions utilitaires pures utilisées pour fournir un support limité aux chaînes de caractères non terminées par un caractère nul.

Exemple

#define __STDC_WANT_LIB_EXT1__ 1
#include <stdio.h>
#include <string.h>
int main(void)
{
    const char str[] = "How many characters does this string contain?";
    printf("without null character: %zu\n", strlen(str));
    printf("with null character:    %zu\n", sizeof str);
#ifdef __STDC_LIB_EXT1__
    printf("without null character: %zu\n", strnlen_s(str, sizeof str));
#endif
}

Sortie possible :

without null character: 45
with null character:    46
without null character: 45

Références

  • Norme C23 (ISO/CEI 9899:2024) :
  • 7.24.6.3 La fonction strlen (p: TBD)
  • K.3.7.4.4 La fonction strnlen_s (p: TBD)
  • Norme C17 (ISO/CEI 9899:2018) :
  • 7.24.6.3 La fonction strlen (p: TBD)
  • K.3.7.4.4 La fonction strnlen_s (p: TBD)
  • Norme C11 (ISO/IEC 9899:2011):
  • 7.24.6.3 La fonction strlen (p: 372)
  • K.3.7.4.4 La fonction strnlen_s (p: 623)
  • Norme C99 (ISO/CEI 9899:1999) :
  • 7.21.6.3 La fonction strlen (p: 334)
  • Norme C89/C90 (ISO/IEC 9899:1990) :
  • 4.11.6.3 La fonction strlen

Voir aussi

(C95) (C11)
retourne la longueur d'une chaîne large
(fonction)
retourne le nombre d'octets dans le prochain caractère multioctet
(fonction)