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
知道了!谢谢各位!
 
posted @ 2015-09-08 13:23  24_jason  阅读(4453)  评论(0编辑  收藏  举报