'\" t .\" Copyright (c) Bruno Haible .\" .\" SPDX-License-Identifier: GPL-2.0-or-later .\" .\" 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 .\" .TH wcstombs 3 2023-10-31 "Linux man-pages 6.7" .SH NAME wcstombs \- convert a wide-character string to a multibyte string .SH LIBRARY Standard C library .RI ( libc ", " \-lc ) .SH SYNOPSIS .nf .B #include .P .BI "size_t wcstombs(char " dest "[restrict ." n "], \ const wchar_t *restrict " src , .BI " size_t " n ); .fi .SH DESCRIPTION If .I dest is not NULL, the .BR wcstombs () function converts the wide-character string .I src to a multibyte string starting at .IR dest . At most .I n bytes are written to .IR dest . The sequence of characters placed in .I dest begins in the initial shift state. The conversion can stop for three reasons: .IP \[bu] 3 A wide character has been encountered that can not be represented as a multibyte sequence (according to the current locale). In this case, .I (size_t)\ \-1 is returned. .IP \[bu] The length limit forces a stop. In this case, the number of bytes written to .I dest is returned, but the shift state at this point is lost. .IP \[bu] The wide-character string has been completely converted, including the terminating null wide character (L\[aq]\e0\[aq]). In this case, the conversion ends in the initial shift state. The number of bytes written to .IR dest , excluding the terminating null byte (\[aq]\e0\[aq]), is returned. .P The programmer must ensure that there is room for at least .I n bytes at .IR dest . .P If .I dest is NULL, .I 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. .P In order to avoid the case 2 above, the programmer should make sure .I n is greater than or equal to .IR "wcstombs(NULL,src,0)+1" . .SH RETURN VALUE The .BR 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, .I (size_t)\ \-1 is returned. .SH ATTRIBUTES For an explanation of the terms used in this section, see .BR attributes (7). .TS allbox; lbx lb lb l l l. Interface Attribute Value T{ .na .nh .BR wcstombs () T} Thread safety MT-Safe .TE .SH VERSIONS The function .BR wcsrtombs (3) provides a better interface to the same functionality. .SH STANDARDS C11, POSIX.1-2008. .SH HISTORY POSIX.1-2001, C99. .SH NOTES The behavior of .BR wcstombs () depends on the .B LC_CTYPE category of the current locale. .SH SEE ALSO .BR mblen (3), .BR mbstowcs (3), .BR mbtowc (3), .BR wcsrtombs (3), .BR wctomb (3)