我从计算中获得了一个带有小数部分为0的double值,然后想要将此值转换为由数字组成的char数组(使用ascii代码),然后返回它...我为它编写了以下代码...
char* as_string(double a,char* ptr)
{
int digits=0;
for(int i=1;;i++)
{if(static_cast<int>(a/pow(10.0,i))==0)
{digits=i;
break;}
}
char b[digits];
for(int i=digits-1;i>=0;i--)
{
b[digits-1-i]=static_cast<int>(a/pow(10.0,i))+48;
a=a-((b[digits-1-i]-48)*pow(10.0,i));
}
strncpy(ptr,b,digits);
return ptr;
}
Run Code Online (Sandbox Code Playgroud)
一切都很顺利......没有语法错误,但在运行时每次都重写了...经过一番审查后,我发现错误发生在指针ptr和strcpy语句周围(因为数组b已成功测试为充满了数字)...任何人都可以.指出错误?
没有必要重新发明轮子.
像这样的东西应该工作得很好(注意,std::string因为你使用的是C++ ,所以我做了一个):
std::string as_string(double a) {
std::ostringstream ss;
ss << a;
return ss.str();
}
Run Code Online (Sandbox Code Playgroud)