(libc.info.gz) String Length

Info Catalog (libc.info.gz) String/Array Conventions (libc.info.gz) String and Array Utilities (libc.info.gz) Copying and Concatenation
 
 5.3 String Length
 =================
 
 You can get the length of a string using the 'strlen' function.  This
 function is declared in the header file 'string.h'.
 
  -- Function: size_t strlen (const char *S)
      Preliminary: | MT-Safe | AS-Safe | AC-Safe |  POSIX Safety
      Concepts.
 
      The 'strlen' function returns the length of the null-terminated
      string S in bytes.  (In other words, it returns the offset of the
      terminating null character within the array.)
 
      For example,
           strlen ("hello, world")
               => 12
 
      When applied to a character array, the 'strlen' function returns
      the length of the string stored there, not its allocated size.  You
      can get the allocated size of the character array that holds a
      string using the 'sizeof' operator:
 
           char string[32] = "hello, world";
           sizeof (string)
               => 32
           strlen (string)
               => 12
 
      But beware, this will not work unless STRING is the character array
      itself, not a pointer to it.  For example:
 
           char string[32] = "hello, world";
           char *ptr = string;
           sizeof (string)
               => 32
           sizeof (ptr)
               => 4  /* (on a machine with 4 byte pointers) */
 
      This is an easy mistake to make when you are working with functions
      that take string arguments; those arguments are always pointers,
      not arrays.
 
      It must also be noted that for multibyte encoded strings the return
      value does not have to correspond to the number of characters in
      the string.  To get this value the string can be converted to wide
      characters and 'wcslen' can be used or something like the following
      code can be used:
 
           /* The input is in 'string'.
              The length is expected in 'n'.  */
           {
             mbstate_t t;
             char *scopy = string;
             /* In initial state.  */
             memset (&t, '\0', sizeof (t));
             /* Determine number of characters.  */
             n = mbsrtowcs (NULL, &scopy, strlen (scopy), &t);
           }
 
      This is cumbersome to do so if the number of characters (as opposed
      to bytes) is needed often it is better to work with wide
      characters.
 
    The wide character equivalent is declared in 'wchar.h'.
 
  -- Function: size_t wcslen (const wchar_t *WS)
      Preliminary: | MT-Safe | AS-Safe | AC-Safe |  POSIX Safety
      Concepts.
 
      The 'wcslen' function is the wide character equivalent to 'strlen'.
      The return value is the number of wide characters in the wide
      character string pointed to by WS (this is also the offset of the
      terminating null wide character of WS).
 
      Since there are no multi wide character sequences making up one
      character the return value is not only the offset in the array, it
      is also the number of wide characters.
 
      This function was introduced in Amendment 1 to ISO C90.
 
  -- Function: size_t strnlen (const char *S, size_t MAXLEN)
      Preliminary: | MT-Safe | AS-Safe | AC-Safe |  POSIX Safety
      Concepts.
 
      The 'strnlen' function returns the length of the string S in bytes
      if this length is smaller than MAXLEN bytes.  Otherwise it returns
      MAXLEN.  Therefore this function is equivalent to '(strlen (S) <
      MAXLEN ? strlen (S) : MAXLEN)' but it is more efficient and works
      even if the string S is not null-terminated.
 
           char string[32] = "hello, world";
           strnlen (string, 32)
               => 12
           strnlen (string, 5)
               => 5
 
      This function is a GNU extension and is declared in 'string.h'.
 
  -- Function: size_t wcsnlen (const wchar_t *WS, size_t MAXLEN)
      Preliminary: | MT-Safe | AS-Safe | AC-Safe |  POSIX Safety
      Concepts.
 
      'wcsnlen' is the wide character equivalent to 'strnlen'.  The
      MAXLEN parameter specifies the maximum number of wide characters.
 
      This function is a GNU extension and is declared in 'wchar.h'.
 
Info Catalog (libc.info.gz) String/Array Conventions (libc.info.gz) String and Array Utilities (libc.info.gz) Copying and Concatenation
automatically generated by info2html