Provided by: manpages-fr-dev_4.26.0-1_all bug

NOM

       mbstowcs - Convertir une chaîne de caractères multioctets en une chaîne de caractères larges

BIBLIOTHÈQUE

       Bibliothèque C standard (libc, -lc)

SYNOPSIS

       #include <stdlib.h>

       size_t mbstowcs(wchar_t dest[restrict .dsize], const char *restrict src,
                       size_t dsize);

DESCRIPTION

       Si  dest  n'est  pas  un pointeur NULL, convertir la chaîne multioctet src en chaîne de caractères larges
       dest. Elle écrira au plus dsize caractères larges dans dest. La séquence de caractères dans la chaîne src
       commencera dans l'état de décalage initial. La conversion peut s'arrêter pour  l'une  des  trois  raisons
       suivantes :

       -  Une séquence multioctet incorrecte a été rencontrée. Dans ce cas, elle renvoie (size_t) -1.

       -  dsize  non-L'\0' wide characters have been stored at dest. In this case, the number of wide characters
          written to dest is returned, but the shift state at this point is lost.

       -  The multibyte string has been completely converted, including the terminating null  character  ('\0').
          In  this  case,  the  number  of  wide characters written to dest, excluding the terminating null wide
          character, is returned.

       Si dest est NULL, dsize est ignoré, et la  conversion  se  présente  comme  au-dessus,  excepté  que  les
       caractères larges ne sont pas écrits en mémoire et qu'aucune limite de longueur n'existe.

       Afin  d'éviter  la situation numéro 2 ci-dessus, le programmeur doit s'assurer que dsize est supérieur ou
       égal a mbstowcs(NULL,src,0)+1.

       Le programmeur doit s'assurer qu'il y assez de place pour au moins dsize caractères larges dans dest.

VALEUR RENVOYÉE

       Le nombre de caractères larges qui constituent  la  partie  convertie  de  la  chaîne,  sans  compter  le
       caractère  large  NULL  final.  Si  une  séquence  multioctet  incorrecte  est  rencontrée,  elle renvoie
       (size_t) -1.

ATTRIBUTS

       Pour une explication des termes utilisés dans cette section, consulter attributes(7).
       ┌──────────────────────────────────────────────────────────────────────┬──────────────────────┬─────────┐
       │ InterfaceAttributValeur  │
       ├──────────────────────────────────────────────────────────────────────┼──────────────────────┼─────────┤
       │ mbstowcs()                                                           │ Sécurité des threads │ MT-Safe │
       └──────────────────────────────────────────────────────────────────────┴──────────────────────┴─────────┘

VERSIONS

       La fonction mbsrtowcs(3) fournit une meilleure interface pour la même fonctionnalité.

STANDARDS

       C11, POSIX.1-2008.

HISTORIQUE

       POSIX.1-2001, C99.

NOTES

       Le comportement de mbstowcs() dépend de la catégorie LC_CTYPE de la localisation en cours.

EXEMPLES

       Le programme ci-dessous illustre l’utilisation  de  mbstowcs(),  ainsi  que  de  certaines  fonctions  de
       classification pour les caractères larges. Voici un exemple de son exécution.

           $ ./t_mbstowcs de_DE.UTF-8 Grüße!
           Taille de la chaîne source (sans le caractère final) :
               8 octets
               6 caractères multioctets

           La chaîne de caractères larges est : Grüße! (6 caractères)
               G alpha majuscule
               r alpha minuscule
               ü alpha minuscule
               ß alpha minuscule
               e alpha minuscule
               ! !alpha

   Source du programme

       #include <locale.h>
       #include <stdio.h>
       #include <stdlib.h>
       #include <string.h>
       #include <wchar.h>
       #include <wctype.h>

       int
       main(int argc, char *argv[])
       {
           size_t mbslen;      /* Number of multibyte characters in source */
           wchar_t *wcs;       /* Pointer to converted wide character string */

           if (argc < 3) {
               fprintf(stderr, "Usage: %s <locale> <string>\n", argv[0]);
               exit(EXIT_FAILURE);
           }

           /* Apply the specified locale. */

           if (setlocale(LC_ALL, argv[1]) == NULL) {
               perror("setlocale");
               exit(EXIT_FAILURE);
           }

           /* Calculate the length required to hold argv[2] converted to
              a wide character string. */

           mbslen = mbstowcs(NULL, argv[2], 0);
           if (mbslen == (size_t) -1) {
               perror("mbstowcs");
               exit(EXIT_FAILURE);
           }

           /* Describe the source string to the user. */

           printf("Length of source string (excluding terminator):\n");
           printf("    %zu bytes\n", strlen(argv[2]));
           printf("    %zu multibyte characters\n\n", mbslen);

           /* Allocate wide character string of the desired size. Add 1
              to allow for terminating null wide character (L'\0'). */

           wcs = calloc(mbslen + 1, sizeof(*wcs));
           if (wcs == NULL) {
               perror("calloc");
               exit(EXIT_FAILURE);
           }

           /* Convert the multibyte character string in argv[2] to a
              wide character string. */

           if (mbstowcs(wcs, argv[2], mbslen + 1) == (size_t) -1) {
               perror("mbstowcs");
               exit(EXIT_FAILURE);
           }

           printf("Wide character string is: %ls (%zu characters)\n",
                  wcs, mbslen);

           /* Now do some inspection of the classes of the characters in
              the wide character string. */

           for (wchar_t *wp = wcs; *wp != 0; wp++) {
               printf("    %lc ", (wint_t) *wp);

               if (!iswalpha(*wp))
                   printf("!");
               printf("alpha ");

               if (iswalpha(*wp)) {
                   if (iswupper(*wp))
                       printf("upper ");

                   if (iswlower(*wp))
                       printf("lower ");
               }

               putchar('\n');
           }

           exit(EXIT_SUCCESS);
       }

VOIR AUSSI

       mblen(3), mbsrtowcs(3), mbtowc(3), wcstombs(3), wctomb(3)

TRADUCTION

       La   traduction   française   de   cette   page   de   manuel   a   été   créée   par  Christophe  Blaess
       <https://www.blaess.fr/christophe/>,   Stéphan   Rafin   <stephan.rafin@laposte.net>,   Thierry   Vignaud
       <tvignaud@mandriva.com>,  François  Micaux,  Alain Portal <aportal@univ-montp2.fr>, Jean-Philippe Guérard
       <fevrier@tigreraye.org>,   Jean-Luc   Coulon   (f5ibh)   <jean-luc.coulon@wanadoo.fr>,   Julien   Cristau
       <jcristau@debian.org>,      Thomas      Huriaux      <thomas.huriaux@gmail.com>,     Nicolas     François
       <nicolas.francois@centraliens.net>,    Florentin    Duneau    <fduneau@gmail.com>,     Simon     Paillard
       <simon.paillard@resel.enst-bretagne.fr>,    Denis    Barbier   <barbier@debian.org>   et   David   Prévot
       <david@tilapin.org>

       Cette traduction est une documentation libre ; veuillez vous  reporter  à  la  GNU General Public License
       version 3 concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.

       Si  vous  découvrez  un  bogue  dans la traduction de cette page de manuel, veuillez envoyer un message à
       debian-l10n-french@lists.debian.org.

Pages du manuel de Linux 6.9.1                    15 juin 2024                                       mbstowcs(3)