码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2015-09-08 15:02:21      阅读:771      评论:0      收藏:0      [点我收藏+]

标签:

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
知道了!谢谢各位!
 

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

标签:

原文地址:http://www.cnblogs.com/24jason/p/4791335.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!