新手请教:关于sprintf_s()函数的用法

Jacksun100 2010-12-25 08:01:05
在编译下列代码时,出现以下错误:
cpp(23) : error C2664: “int sprintf_s(char *,size_t,const char *,...)”: 不能将参数 2 从“const char [3]”转换为“size_t”
请问这是什么意思?该怎么修改?
#include<iostream>
#include<string>
#include<stdio.h>
using namespace std;
string dec_to_hex(double );
int main(){
double x;
string str;
cout<<"please input a decimal number:\n";
cin>>x;
str=dec_to_hex(x);
cout<<str;
}
string dec_to_hex(double x){
char* ch[20];
string str,str1;
int n=int(x),num,count;
double m=x-n;
while(n){
count=0;
num=n%16;
n=n/16;
sprintf_s(ch[count],"%x",num);
count++;
}
for(unsigned i=count;1>0;i--){
str.append(ch[i-1]);
}
cout<<str<<endl;
return str;
}









...全文
1245 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Jacksun100 2010-12-25
  • 打赏
  • 举报
回复
知道了!谢谢各位!
luciferisnotsatan 2010-12-25
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 zy020118 的回复:]

sprintf_s()是sprintf()的安全版本,通过指定缓冲区长度来避免sprintf()存在的溢出风险
即第二个参数为size_t,指缓冲区的最大长度
[/Quote]
+1
zy020118 2010-12-25
  • 打赏
  • 举报
回复
sprintf_s()是sprintf()的安全版本,通过指定缓冲区长度来避免sprintf()存在的溢出风险
即第二个参数为size_t,指缓冲区的最大长度
sduxiaoxiang 2010-12-25
  • 打赏
  • 举报
回复
第二个参数是长度 无符号int型
chlaws 2010-12-25
  • 打赏
  • 举报
回复
sprintf_s(ch[count],1,"%x",num);

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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