【3D技术宅公社】XR数字艺术论坛  XR技术讨论 XR互动电影 定格动画

 找回密码
 立即注册

QQ登录

只需一步,快速开始

调查问卷
论坛即将给大家带来全新的技术服务,面向三围图形学、游戏、动画的全新服务论坛升级为UTF8版本后,中文用户名和用户密码中有中文的都无法登陆,请发邮件到324007255(at)QQ.com联系手动修改密码

3D技术论坛将以计算机图形学为核心,面向教育 推出国内的三维教育引擎该项目在持续研发当中,感谢大家的关注。

查看: 3882|回复: 6

“swprintf”这个函数是不是有问题啊??

[复制链接]
发表于 2006-6-4 08:40:49 | 显示全部楼层 |阅读模式

如题,话不多说,看代码:

#include "stdlib.h"

#include "iostream"

#include "wchar.h"

using namespace std;

main()

{

WCHAR strNumber[30];

float fNumber;

fNumber=1.2345;

swprintf(strNumber,L"%f",fNumber);

cout<<strNumber<<endl;

printf("%f",fNumber);

}

输出结果:

002EFAC

1.2345

为什么 “strNumber”中的内容不是“1.2345”呢???

[此贴子已经被鼯鼠于2006-6-5 9:39:59编辑过]
发表于 2006-6-4 12:13:17 | 显示全部楼层

sprintf, swprintf 函数

Write formatted data to a string.
往缓冲区中按指定格式输出参数

int sprintf( char *buffer, const char *format [, argument] ... );

int swprintf( wchar_t *buffer, const wchar_t *format [, argument] ... );

sprintf、swprintf分别是对单字节/双字节字符格式化的,wsprintf根据预定义指示符的不同可以对单字节/双字节字符格式化

swprintf(strTemp,L"%s",L"ngangche结果");

改成:
swprintf(strTemp,_TEXT"%s",_TEXT"ngangche结果");

比较好吧。

发表于 2006-6-4 20:44:10 | 显示全部楼层
cout<<strNumber<<endl;一句应该为wcout << strNumber << endl;
 楼主| 发表于 2006-6-5 06:49:53 | 显示全部楼层

恩.

是要改成"wcout"就对了.

不过还有一个问题,不知道你们在写程序的时候碰到过没有??

我使用"wchar wstrNumber[20]"这种变量的时候,有时候在程序结束的时候,VC.NET会因为出错而中断,说什么堆栈有问题,改了半天没改好.

最后,我把"wstrNumber[20]"改成"wstrNumber[30]",就没问题了.是不是 "wchar"这种变量不稳定啊?????

发表于 2006-6-5 09:39:40 | 显示全部楼层

那是不是你输入的字符数过大了

你现在用的这些东西我原来没有怎么用过

 楼主| 发表于 2006-6-5 12:21:14 | 显示全部楼层

你编写DX9的程序的话就要用 UNICODE 啊

用了 UNICODE 就要用 WCHAR 啊

你不会一直都用的 CHAR 吧

其实我很想用STRING 可是 ,在VC2005下 设置UNICODE 后,一用 STD 和 STRING 就出错

[em07][em07][em07][em07][em07][em07][em07][em07]
发表于 2006-6-5 13:41:30 | 显示全部楼层

我基本上都在用CHAR *

偶尔会用到WCHAR,比如说调用硬盘上的文件的时候。

CString 还好吧~我写过一个聊天室就用的CString

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|3D数字艺术论坛 ( 沪ICP备14023054号 )

GMT+8, 2025-5-14 05:38

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表