wcstombs()
Convert a wide-character string into a multibyte character string
Synopsis:
#include <stdlib.h>
size_t wcstombs( char* s,
const wchar_t* pwcs,
size_t n );
Arguments:
- s
- A pointer to a buffer where the function can store the multibyte-character string.
- pwcs
- The wide-character string that you want to convert.
- n
- The maximum number of bytes to store.
Library:
libc
Use the -l c option to qcc to link against this library. This library is usually included automatically.
Description:
The wcstombs() function converts a sequence of wide character codes from the array pointed to by pwcs into a sequence of multibyte characters, and stores them in the array pointed to by s. It stops if a multibyte character exceeds the limit of n total bytes, or if the NUL character is stored. At most n bytes of the array pointed to by s are modified.
The wcsrtombs() function is a restartable version of wcstombs().
Returns:
The number of array elements modified, not including the terminating zero
code, if present, or (size_t)-1
if an invalid multibyte character is encountered.
Examples:
#include <stdio.h>
#include <stdlib.h>
wchar_t wbuffer[] = {
0x0073,
0x0074,
0x0072,
0x0069,
0x006e,
0x0067,
0x0000
};
int main( void )
{
char mbsbuffer[50];
int i, len;
len = wcstombs( mbsbuffer, wbuffer, 50 );
if( len != -1 ) {
for( i = 0; i < len; i++ )
printf( "/%4.4x", wbuffer[i] );
printf( "\n" );
mbsbuffer[len] = '\0';
printf( "%s(%d)\n", mbsbuffer, len );
}
return EXIT_SUCCESS;
}
produces the output:
/0073/0074/0072/0069/006e/0067
string(6)
Classification:
Safety: | |
---|---|
Cancellation point | No |
Signal handler | Yes |
Thread | Yes |