C++: wsprintf和sprintf 的区别

本文探讨了在Windows环境下使用C语言编程时,sprintf与wsprintf函数的区别及适用场景。通过一个具体的算面积程序案例,说明了两种函数在不同编码环境下如何正确使用。

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

我在看视频《C语言也能干大事》的时候,老师说写WINDOWS程序的时候最好都用wsprintf而不用sprintf,可是我编了一个算面积的程序,在把得到的结果用变成字符串的时候,只能用sprintf,如果用了wsprintf,最终在屏幕上看见的结果只会是一个f,请问这是什么原因?
与这个相关的代码如下

TCHAR number[256];
GetDlgItemText(hwnd,IDC_EDIT1,number,sizeof(number));
double radius=atof(number);
TCHAR area[256];
double result=radius*radius*3.1415926;
sprintf(area,"%lf",result);
SetDlgItemText(hwnd,IDC_EDIT2,area);

wsprintf 是和 wchar_t配合的。
sprintf 是和 char 配合的。

老师说写WINDOWS程序的时候最好都用wsprintf而不用sprintf;
老师的意思是你的工程是unicode编码的。

而你可能用的VC6.默认多字节编码。
当然可以设置编码。

LS的还是认真看看MSDN吧
wsprintf(wsprintfA)是API,sprintf是c函数,都是ansi,
对应的unicode分别是wsprintfW和swprintf

wsprintf 有1024字符限制,而且不支持浮点数。
所以结果不对。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值