从函数返回字符指针

Avi*_*mar 1 c++

我从计算中获得了一个带有小数部分为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已成功测试为充满了数字)...任何人都可以.指出错误?

San*_*ker 5

没有必要重新发明轮子.

像这样的东西应该工作得很好(注意,std::string因为你使用的是C++ ,所以我做了一个):

std::string as_string(double a) {
    std::ostringstream ss;
    ss << a;
    return ss.str();
}
Run Code Online (Sandbox Code Playgroud)