wcstombs — convert a wide-character string to a multibyte string
#include <stdlib.h>
size_t
wcstombs( |
char *dest, |
const wchar_t *src, | |
size_t n) ; |
If dest
is not
NULL, the wcstombs
() function
converts the wide-character string src
to a multibyte string
starting at dest
. At
most n
bytes are
written to dest
. The
conversion starts in the initial state. The conversion can
stop for three reasons:
A wide character has been encountered that can not be represented as a multibyte sequence (according to the current locale). In this case, (size_t) −1 is returned.
The length limit forces a stop. In this case, the
number of bytes written to dest
is returned, but the
shift state at this point is lost.
The wide-character string has been completely
converted, including the terminating null wide
character (L'\0'). In this case, the conversion ends in
the initial state. The number of bytes written to
dest
, excluding
the terminating null byte ('\0'), is returned.
The programmer must ensure that there is room for at least
n
bytes at dest
.
If dest
is NULL,
n
is ignored, and the
conversion proceeds as above, except that the converted bytes
are not written out to memory, and no length limit
exists.
In order to avoid the case 2 above, the programmer should
make sure n
is
greater than or equal to wcstombs(NULL,src,0)+1
.
The wcstombs
() function
returns the number of bytes that make up the converted part
of a multibyte sequence, not including the terminating null
byte. If a wide character was encountered which could not be
converted, (size_t)
−1 is returned.
For an explanation of the terms used in this section, see attributes(7).
Interface | Attribute | Value |
wcstombs () |
Thread safety | MT-Safe |
The behavior of wcstombs
()
depends on the LC_CTYPE
category of the current locale.
The function wcsrtombs(3) provides a thread safe interface to the same functionality.
This page is part of release 4.07 of the Linux man-pages
project. A
description of the project, information about reporting bugs,
and the latest version of this page, can be found at
https://www.kernel.org/doc/man−pages/.
Copyright (c) Bruno Haible <haibleclisp.cons.org> %%%LICENSE_START(GPLv2+_DOC_ONEPARA) This is free documentation; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. %%%LICENSE_END References consulted: GNU glibc-2 source code and manual Dinkumware C library reference http://www.dinkumware.com/ OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html ISO/IEC 9899:1999 |