关于宽字符打印的大小问题 unicode wPrintf

[复制链接]
2491|2
 楼主| hebeijiang 发表于 2013-1-29 09:05 | 显示全部楼层 |阅读模式
本帖最后由 hebeijiang 于 2013-1-29 09:38 编辑

因项目用到unicode的字符打印,
使用vswprintf来处理,该如何确定 size_t 的值:
int vswprintf(wchar_t * __restrict /*s*/, size_t /*n*/,
                  const wchar_t * __restrict /*format*/, __va_list /*arg*/) __attribute__((__nonnull__(3)));

在以前可以这样写:
void Printf(char *fmt,...)   
{   
    va_list ap;
    char string[255];
    va_start(ap,fmt);   
    vsprintf(string,fmt,ap);   
    Uart_PrintStr0(string);   
    va_end(ap);   
}
现在改为:
void wPrintf(wchar *fmt,...)   
{   
    va_list ap;
    wchar string[255];
    va_start(ap, fmt);   
    vswprintf(string, size_t, fmt, ap);     //这的 size_t 我要如何获得?
    Uart_PrintStr0(string);   
    va_end(ap);   
}
 楼主| hebeijiang 发表于 2013-1-29 22:10 | 显示全部楼层
理解错误,原来size_t只是估计用到的最大值,并不是fmt的实际大小。
结贴
jlass 发表于 2013-1-30 12:03 | 显示全部楼层
我来蹭分
您需要登录后才可以回帖 登录 | 注册

本版积分规则

15

主题

158

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部