- C Library - Home
- C Library - <assert.h>
- C Library - <complex.h>
- C Library - <ctype.h>
- C Library - <errno.h>
- C Library - <fenv.h>
- C Library - <float.h>
- C Library - <inttypes.h>
- C Library - <iso646.h>
- C Library - <limits.h>
- C Library - <locale.h>
- C Library - <math.h>
- C Library - <setjmp.h>
- C Library - <signal.h>
- C Library - <stdalign.h>
- C Library - <stdarg.h>
- C Library - <stdbool.h>
- C Library - <stddef.h>
- C Library - <stdio.h>
- C Library - <stdlib.h>
- C Library - <string.h>
- C Library - <tgmath.h>
- C Library - <time.h>
- C Library - <wctype.h>
- C Programming Resources
- C Programming - Tutorial
- C - Useful Resources
C library - wctomb() function
The C stdlib library wctomb() function is used to convert the wide-character wchar to its multi-byte sequence and stores it at the starting of the character array pointed to by 'str' and returns the length in bytes of the equivalent multi-byte sequence.
This function is commonly used for encoding, which is essential when dealing with various character encodings in applications that require support for multiple languages.
Syntax
Following is the C library syntax of the wctomb() function −
int wctomb(char *str, wchar_t wchar)
Parameters
This function accepts following parameters −
str − It represent a pointer to an array, which is large enough to hold a multi-byte sequence,
wchar − It represents a wide character of type wchar_t to be converted.
Return Value
Following is the return values −
If 'str' is not 'NULL' and conversion is successful, then its return number of bytes written to the buffer.
If 'str' is 'NULL' then its return 0.
If conversion fails, then its return -1.
Example 1
Let's create a basic c program to demonstrate the use of wctomb() function.
#include <stdio.h>
#include <stdlib.h>
int main () {
int i;
wchar_t wchar = L'X';
char *nullstr = NULL;
char *str = (char *)malloc(sizeof( char ));
i = wctomb( str, wchar );
printf("Characters converted: %u\n", i);
printf("Multibyte character: %.1s\n", str);
printf("Trying to convert when string is NULL:\n");
i = wctomb( nullstr, wchar );
printf("Characters converted: %u\n", i);
/* this will not print any value */
printf("Multibyte character: %.1s\n", nullstr);
return(0);
}
Output
Following is the output −
Characters converted: 1 Multibyte character: X Trying to convert when string is NULL: Characters converted: 0 Multibyte character:
Example 2
The following example convert a wide-character to a multi-byte character using wctomb() function.
#include <stdio.h>
#include <stdlib.h>
#include <wchar.h>
#include <locale.h>
int main() {
setlocale(LC_ALL, "");
// Japanese wide character to be converted
wchar_t wchar = L'';
// Buffer to hold the multibyte character
char mbstr[MB_CUR_MAX];
// Convert wide character to multibyte character
int ret_val = wctomb(mbstr, wchar);
// Check the return value of wctomb
if (ret_val == -1) {
printf("Conversion failed.\n");
} else {
printf("Converted multibyte character: ");
for (int i = 0; i < ret_val; ++i) {
printf("%02X ", (unsigned char)mbstr[i]);
}
printf("\nNumber of bytes written: %d\n", ret_val);
}
return 0;
}
Output
Following is the output −
Conversion failed.