c语言wsprintf和printf的问题

wsprintf对应的字符串是宽字符型wchar_t,即一个字符占用2个字节的内存空间. sprintf对应的字符串是字符类型为char,几一个字符占用1个字节的内存空间. PS:sprintf是用于对ASCII码的127个字符进行操作,wsprintf是对UNICODE的多语言字符进行操作.比如中文,就要用wsprintf 那么我用atof函数把一个浮点型整数字符串转换为浮点数,然后再用wsprintf函数把这个浮点数转换为字符串到数组中。然后比较转化前和转化后的字符窜,不相等,但是用sprintf转化却相等,这是为什么?知道的告诉下。谢谢

第1个回答  2011-10-19
你所创建的工程是否是UNICODE工程?
我看你使用atof转换,说明转换之前的字符串是ANSI字符串,wsprintf是自适应的函数,它在非UNICODE环境下,会把字符串转换成ANSI字符串,而在UNICODE环境下会把字符串转换成UNICODE字符串,肯定会不相等了。
第2个回答  2011-10-19
你对ANSI和UNICODE还有着一些误区
ANSI的字符不一定占用1个字节,ANSI是可以表示中文字符的

UNICODE是每个字符一定占用2个字节

sprintf是ANSI版本的函数,所以sprintf也可以对多语言字符进行操作

atof函数把一个浮点型整数字符串转换为浮点数,你这个浮点型整数字符串是wchar_t的么??
atof是ANSI版本的函数本回答被提问者采纳

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网