char与wchar

打印 wchar_t 类型的字符:

由于 wchar_t 类型涉及到多字节编码,可以使用宽字符输出函数来打印 wchar_t 类型的字符,例如 wprintf 或 putwchar。
以 UTF-8 编码为例,可以使用 wprintf 函数打印一个 wchar_t 类型的字符:
于 wchar_t 类型的字符,在打印之前需要调用 setlocale 函数来设置本地化环境,以确保宽字符输出函数能够正常工作。

#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <wchar.h>
#include <locale.h>


void printUnicodeHexString(const wchar_t* unicodeStr) {
    for (int i = 0; unicodeStr[i] != L'\0'; i++) {
        printf("%04x ", (unsigned int)unicodeStr[i]);
    }
    printf("\n");
}

int main()
{
   setlocale(LC_ALL, "");  // 设置本地化环境

    char input[] = "你好";
    printf("              :  %s\n",input);

    wchar_t *output;
    int charCount = strlen(input) + 1; // 包括终止符 '\0'
    int wcharCount = mbstowcs(NULL, input, 0); // 获取转换后的 wchar_t 数组的元素个数

    //wchar_t *output = malloc(wcharCount * sizeof(wchar_t)); // 分配存储空间
    output = malloc(wcharCount * sizeof(wchar_t)); // 分配存储空间
    mbstowcs(output, input, charCount); // 进行转换

    wprintf(L">L:%ls\n", output); // 打印转换后的字符数组
    printUnicodeHexString(output);
    free(output); // 释放内存

    return 0;
}

以上代码问题Linux c中printf 和 wprintf 不能同时使用。
printf 函数是用于在标准输出流上输出格式化字符串的函数,它不直接支持打印宽字符 (wchar_t) 字符串。对于打印宽字符字符串,你需要使用 wprintf 函数。
链接: 在线中文转Unicode

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值