关于wsprintf与sprintf之间的区别

lucky-lucky 2010-04-23 08:29:17
那么我用atof函数把一个浮点型整数字符串转换为浮点数,

然后再用wsprintf函数把这个浮点数转换为字符串到数组中。

然后比较转化前和转化后的字符窜,不相等,

但是用sprintf转化却相等,这是为什么?

知道的告诉下。谢谢
void Main_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify)
{
TCHAR SHU1[7],SHU2[7],SHU3[7];
double dSHU1,dSHU2,dSHU3;
switch(id)
{
case IDC_OK:
{
GetDlgItemText(hwnd,IDC_EDIT1,SHU1,sizeof(SHU1));
GetDlgItemText(hwnd,IDC_EDIT2,SHU2,sizeof(SHU2));
dSHU1 = atof(SHU1);dSHU2 = atof(SHU2);
dSHU3 = dSHU1 * dSHU2;
sprintf(SHU3,"%7.2f",dSHU3);//此处换成wsprintf就不对了。为何?
SetDlgItemText(hwnd,IDC_EDIT3,SHU3);
MessageBox(hwnd,TEXT("你很牛~"),TEXT("问好"),MB_OK);
}
break;
default:
break;
}
}
...全文
339 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
ForestDB 2010-04-24
  • 打赏
  • 举报
回复
帮顶。
zhangweiit 2010-04-23
  • 打赏
  • 举报
回复
2楼说得也没错
但是,_t取决于编译选项,条件编译
如果他只是转换float,但是,编译选项是unicode那一样会调用ws版本的
aweer 2010-04-23
  • 打赏
  • 举报
回复
w是wide的意思 接受16位的 双字节长的字符
sprintf 接受8位 单字节长的字符
zhangweiit 2010-04-23
  • 打赏
  • 举报
回复
如果是用来做整型与字符型转换,当然用ws版本时,会出错了,因为,占位都不一样啊
jackyjkchen 2010-04-23
  • 打赏
  • 举报
回复
你既然用TCHAR,那最好使用_tsprintf
zhangweiit 2010-04-23
  • 打赏
  • 举报
回复
wsprintf是sprintf的宽字符版
简单的说,ws是双字节的,用在中文等双字节的语言的时候
sprintf用在全ascii码上

69,381

社区成员

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

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