-2

我正在尝试一些非常简单的事情(我认为),将一个 int 数组输出到一个 char 中,如下所示:

 int Z[10]={0};
 char buff[100];

 for(int i =0; i<10; i++){
    Z[i]+=10;
  }

   sprintf(buff,"%d",Z); 
 retunr buff;

我希望你能帮助我或提供替代解决方案。

我怎样才能将所有这些值(int 数组)放在一个变量中?

最好的祝福。

4

3 回答 3

0

您提供的代码不应该正常工作,因为Z它是一个数组int,而%d涉及一个int. 使用sprintf,可以将 的每个值Z放在一个字符串中:

#include <stdio.h>

int size = 0;

for (i = 0; i < 10; i++)
{
  size += sprintf(buff+size, "%d", Z[i]);
}
于 2013-03-27T16:15:20.317 回答
0
sprintf(buff,"%d",Z); 

是错的。您的想法是将整个数组放入缓冲区,这是行不通的。

它应该是

int ret = 0;
for(int i=0; i<10; i++)
{
  ret += sprintf(buff+ret, "%d", z[i]);
}

代码片段只是一个示例。请确保您进行了充分的错误检查。

另一个建议是使用snprintf,它比 sprintf 更安全。

于 2013-03-27T16:15:34.833 回答
0

首先,不要使用sprintf. 这太危险了。其次,不要忘记分隔符。就像是:

std::ostringstream dest;
for ( int const* p = std::begin( Z ); p != std::end( Z ); ++ p ) {
    if ( p != std::begin( Z ) ) {
        dest << ' ';
    }
    dest << *p;
}
std::string results = dest.str();

应该做的伎俩。

于 2013-03-27T16:29:03.750 回答