首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

浅谈C中的wprintf和宽字符显示

article/details/1868724  今天在CSDN的Blog首页看到一篇文章“也谈计算机字符编码 ”,由于前一阵业余翻译了“UTF-8 and Unicode FAQ for Unix/Linux...作者的文章写得很明白易懂,虽然有一些概念上的细节问题我觉得有商榷之处;作者还给出一个简单的在windows下使用wprintf正确输出字符串“中文”的小例子,我linux下模仿作者给出的示例代码写了如下的示例代码...为 什么我在Linux下的程序就不对呢?我很不服气,于是开始以各种关键字进行搜索,想看看别人是否遇到过类似的问题。...wprintf 使用的是wide stream,因此需要将所给的mbs参数转换为wcs再由wprintf完成输出;这个转换是由wprintf隐式的对mbs不断调用mbrtowc来 完成,转换规则依然是和...貌似在linux下输出“中文"的正确方法是 wprintf( "%ls/n",L"中文") ,而引文中作者在Windows成功操作的wprintf("%s/n", L"中文")在linux无法正确工作,

98920
您找到你想要的搜索结果了吗?
是的
没有找到

宽字符wchar_t和窄字符char——putwchar、wprintf

宽字符输出函数   wprintf   wprintf无非就是printf的一个变种,和fprintf差不多只是格式上稍有区别   运行结果:   上面的代码中,wprintf使用的格式控制符是%ls,...,其实在windows下使用和都是可以正常输出宽字符串的(其他操作系统下就不一定了)   %s当使用 printf() 时,按照单字符格式输出字符串当使用 wprintf() 时,按照宽字符(两字节)格式输出字符串...   %S当使用 printf() 时,按照宽字符格式输出字符串当使用 wprintf() 时,按照单字符格式输出字符串   注意这个H是宽字符串mm中的H,而不是ss中的H,ss中的字符串中的每个字符占一个字节...,printf如果按照宽字符的标准来输出就无法正常输出了,而wprintf为什么只输出了H呢,不是输出字符串吗,   下面我们用VS来看宽字符在内存中的存储   从上图就可以很清楚的看出“Hello World...,%S这个格式说明符,表示使用与函数支持的默认宽度“相反”的字符宽度,有了这一段话,上面的就很好解释了,printf因为默认支持的宽度是单字符,而%S偏要使用相反的,那么就   使用宽字符格式输出,而wprintf

1.4K40

C语言printf()scanf()的转换说明和转换说明修饰符

注:本文的所有示例代码均在Linux环境下以g++ 4.4.6编译成64位程序的执行。...输出时会及时的输到屏幕 Linux和Windows下的缓冲区管理可见:C的全缓冲、行缓冲和无缓冲。 5.小结 关于本文,个人存在两个疑问。...第二个是在输出宽字符串时,发现将printf和wprintf同时使用时,wprintf无法输出,具体不知原因,这里建议不要同时使用printf和wprintf,以免发生错误。...原因尚不清楚,估计和wprintf和printf内部实现有关,也不知道在Windows平台是否也存在这种问题,有兴趣的读者可以尝试一下。...下一篇博文预估将集结全部火力,探讨解决这个问题,wprintf的具体用法,字符编码等相关问题,敬请期待。

1.9K20
领券