wsprintf和sprintf的详细区别

ww884203 2010-09-09 02:41:02
我在看视频《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);
...全文
506 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
wyfwx 2010-09-09
  • 打赏
  • 举报
回复
_T等同于TCHAR,大概是这样,我没有装MSDN
ww884203 2010-09-09
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 wyfwx 的回复:]
wsprintf(area,_T("%lf"),result); 估计这样也可以了
[/Quote]
_T未定义。。。
wyfwx 2010-09-09
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 stjay 的回复:]
LS的还是认真看看MSDN吧
wsprintf(wsprintfA)是API,sprintf是c函数,都是ansi,
对应的unicode分别是wsprintfW和swprintf

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

说得对,我刚没查msdn.
一般我都不会这么使用,都用string
sun123yun 2010-09-09
  • 打赏
  • 举报
回复
抢抢多点撒
canshui 2010-09-09
  • 打赏
  • 举报
回复
API ??
stjay 2010-09-09
  • 打赏
  • 举报
回复
LS的还是认真看看MSDN吧
wsprintf(wsprintfA)是API,sprintf是c函数,都是ansi,
对应的unicode分别是wsprintfW和swprintf

wsprintf 有1024字符限制,而且不支持浮点数。
所以结果不对。
wyfwx 2010-09-09
  • 打赏
  • 举报
回复
wsprintf(area,_T("%lf"),result); 估计这样也可以了
wyfwx 2010-09-09
  • 打赏
  • 举报
回复
unicode and asc
冻结 2010-09-09
  • 打赏
  • 举报
回复
工具-》选项 下找找吧。
我没怎么用过VC6.
ww884203 2010-09-09
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 freezezdj 的回复:]
wsprintf 是和 wchar_t配合的。
sprintf 是和 char 配合的。

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

而你可能用的VC6.默认多字节编码。
当然可以设置编码。
[/Quote]
谢谢!请问在哪里设置编码?
冻结 2010-09-09
  • 打赏
  • 举报
回复
wsprintf 是和 wchar_t配合的。
sprintf 是和 char 配合的。

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

而你可能用的VC6.默认多字节编码。
当然可以设置编码。
justkk 2010-09-09
  • 打赏
  • 举报
回复
wsprintf是处理宽字符的吧,汉字啥的。。

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧