int sprintf_s(char *,size_t,const char *,...)”: 不能将参数 2 从“const char [3]”转换为“size_t”...

2014-03-02 20:14
在编译下列代码时,出现以下错误: 
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; 










 

回复讨论(解决方案)

sprintf_s(ch[count],1,"%x",num);
第二个参数是长度 无符号int型
sprintf_s()是sprintf()的安全版本,通过指定缓冲区长度来避免sprintf()存在的溢出风险 
即第二个参数为size_t,指缓冲区的最大长度
sprintf_s()是sprintf()的安全版本,通过指定缓冲区长度来避免sprintf()存在的溢出风险 
即第二个参数为size_t,指缓冲区的最大长度 
+1
知道了!谢谢各位!
 

转载于:https://www.cnblogs.com/24jason/p/4791335.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值