How to convert a wide-character string to a multibyte character string in C

1 Answer

0 votes
#include <stdio.h>
#include <stdlib.h>

#define BUFFER_SIZE 128

int main(void)
{
    
    char* pMBBuffer = (char*)malloc(BUFFER_SIZE); // multibyte character buffer
    const wchar_t* pWCBuffer = L"abcdefg...";

    size_t i;  
    
    /*
        wcstombs_s(
        size_t*        _PtNumOfCharConverted,
        char*          _Dst,
        size_t         _DstSizeInBytes,
        wchar_t const* _Src,
        size_t         _MaxCountInBytes
        );
    */
    
    
    // -1 for NULL 
    wcstombs_s(&i, pMBBuffer, (size_t)BUFFER_SIZE, pWCBuffer, (size_t)BUFFER_SIZE - 1);

    printf("Characters converted: %zu\n", i);
    printf("Multibyte character: %s\n\n", pMBBuffer);

    free(pMBBuffer);
 
    return 0;
}


/*
run:

Characters converted: 11
Multibyte character: abcdefg...

*/

 



answered Jan 17, 2025 by avibootz
edited Jan 17, 2025 by avibootz
...