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
知道了!谢谢各位!
转自:http://www.itnose.net/detail/973571.html