MirBSD manpage: wcsnrtombs(3), wcsrtombs(3)

WCSRTOMBS(3)               BSD Programmer's Manual                WCSRTOMBS(3)


     wcsrtombs, wcsnrtombs - convert a wide character string to a multibyte


     #include <stdlib.h>

     wcsrtombs(char *s, const wchar_t **pwcs, size_t n, mbstate_t *ps);

     wcsnrtombs(char *s, const wchar_t **pwcs, size_t max, size_t n,
             mbstate_t *ps);


     wcsrtombs() converts the null-terminated wide character string indirectly
     pointed to by pwcs to the corresponding multibyte character string, and
     store it to the array pointed to by s. The wcsnrtombs() function behaves
     the same, but reads at most max wide characters from the wide character
     string indirectly pointed to by pwcs. The conversion stops due to the
     following reasons:

     •   The conversion reaches a null wide character. In this case, the null
         wide character is also converted.

     •   wcsrtombs() or wcsnrtombs() has already stored n bytes to the array
         pointed to by s.

     •   The conversion encounters an invalid character.

     •   The wcsnrtombs() function has already devoured max wide characters.

     Each characters will be converted as if wcrtomb(3) is continuously
     called, except the internal state of wcrtomb(3) will not be affected.

     After conversion, if s is not a NULL pointer, the pointer object pointed
     to by pwcs is a NULL pointer (if the conversion is stopped due to reach-
     ing a null wide character) or the first byte of the character just after
     the last character converted.

     If s is not a null pointer and the conversion is stopped due to reaching
     a null wide character, wcsrtombs() and wcsnrtombs() place the state ob-
     ject pointed to by ps to an initial state after the conversion is taken

     The behaviour of the wcsrtombs() and wcsnrtombs() is affected by the
     LC_CTYPE category of the current locale.

     These are the special cases:

     s == NULL     wcsrtombs() and wcsnrtombs() return the number of bytes to
                   store the whole multibyte character string corresponding to
                   the wide character string pointed to by pwcs, not including
                   the terminating null byte. In this case, n is ignored.

     pwcs == NULL || *pwcs == NULL
                   Undefined (may causes the program to crash).

     ps == NULL    wcsrtombs() uses its own internal state object to keep the
                   conversion state, instead of ps mentioned in this manual
                   page. wcsnrtombs() has an own internal state which is dif-
                   ferent from the one of wcsrtombs().

                   Calling any other functions in libc never change the inter-
                   nal state of wcsnrtombs() or wcsrtombs(), that is initial-
                   ised at startup time of the program.


     wcsrtombs() and wcsnrtombs() return:

     0 or positive
                   Number of bytes stored to the array pointed to by s, except
                   for a null byte. There is no cases that the value returned
                   is greater than n (unless s is a null pointer). If the re-
                   turn value is equal to n, the string pointed to by s will
                   not be null-terminated.

     (size_t)-1    pwcs points to the string containing invalid wide charac-
                   ter. wcsrtombs() and wcsnrtombs() also set errno to indi-
                   cate the error.


     wcsrtombs() and wcsnrtombs() may cause an error in the following cases:

     [EILSEQ]      pwcs points to the string containing an invalid wide char-


     setlocale(3), wcrtomb(3), wcstombs(3)


     The wcsrtombs() function conforms to ANSI X3.159-1989 ("ANSI C89"). The
     wcsnrtombs() function is a GNU extension.


     wcsnrtombs() first appeared in MirBSD #10.

MirBSD #10-current            December 11, 2021                              1

Generated on 2022-12-24 01:00:14 by $MirOS: src/scripts/roff2htm,v 1.113 2022/12/21 23:14:31 tg Exp $ — This product includes material provided by mirabilos.

These manual pages and other documentation are copyrighted by their respective writers; their sources are available at the project’s CVSweb, AnonCVS and other mirrors. The rest is Copyright © 2002–2022 MirBSD.

This manual page’s HTML representation is supposed to be valid XHTML/1.1; if not, please send a bug report — diffs preferred.

Kontakt / Impressum & Datenschutzerklärung