Linux下测试Unicode用的一段小程序

本文介绍了一个使用 C 语言实现的字符编码转换示例程序。该程序演示了如何使用 mbstowcs 和 wcstombs 函数在多字节字符集与宽字符集之间进行转换,并通过 mblen 和 mbtowc 函数检查每个字符的有效长度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include <stdio.h>
#include <wchar.h>
#include <locale.h>
#include <string.h>
#include <stdlib.h>
// LANG=zh_CN
//#define MB_CUR_MAX 1024
char *string = "测试Locale的软件!";
int main()
{
 int i, l, length;
 char *ptr;
 char cbuf[128];
 wchar_t wcbuf[128];
 setlocale(LC_ALL, "");
 printf("MB_CUR_MAX %d/n", MB_CUR_MAX);
 length = strlen(string);
 printf("string %s, length %d/n", string, length);
 /* mbstowcs() */
 l = mbstowcs(wcbuf, string, 128);
 printf("mbstowcs() -> num %d,", l);
 for (i = 0; i < l; i++)
 {
  printf(" %x", wcbuf);
 }
 printf("/n");
 /* wcstombs() */
 l = wcstombs(cbuf, wcbuf, 128);
 printf("wcstombs() -> length %d, %s/n", l, cbuf);
 /* mblen() check */
 for (ptr = string; *ptr; )
 {
  l = mblen(ptr, length);
  mbtowc(wcbuf, ptr, length);
  printf("ptr %s, mblen %d, wchar %x/n", ptr, l, wcbuf[0]);
  if (l <= 0)
  {
   break;
  }
  ptr += l;
 }
 return 0 ;
}
//end
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值