#include <stdlib.h>

size_t wcstombs(char *str, const wchar_t *pwcs, size_t n);


Declared, not implemented


IEEE Std 1003.1-2017


wcstombs() - convert a wide-character string to a character string

The wcstombs() function shall convert the sequence of wide-character codes that are in the array pointed to by pwcs into a sequence of characters that begins in the initial shift state and store these characters into the array pointed to by s, stopping if a character would exceed the limit of n total bytes or if a null byte is stored. Each wide-character code shall be converted as if by a call to wctomb(), except that the shift state of wctomb() shall not be affected.

The behavior of this function shall be affected by the LC_CTYPE category of the current locale.

No more than n bytes shall be modified in the array pointed to by s. If copying takes place between objects that overlap, the behavior is undefined. If s is a null pointer, wcstombs() shall return the length required to convert the entire array regardless of the value of n, but no values are stored.

Return value

If a wide-character code is encountered that does not correspond to a valid character (of one or more bytes each), wcstombs() shall return (size_t)-1. Otherwise, wcstombs() shall return the number of bytes stored in the character array, not including any terminating null byte. The array shall not be null-terminated if the value returned is n.


The wcstombs() function shall fail if:

  • EILSEQ - a wide-character code does not correspond to a valid character.



Known bugs


See Also

  1. Standard library functions
  2. Table of Contents