我正在尝试一些非常简单的事情(我认为),将一个 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 数组)放在一个变量中?
最好的祝福。
您提供的代码不应该正常工作,因为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]);
}
sprintf(buff,"%d",Z);
是错的。您的想法是将整个数组放入缓冲区,这是行不通的。
它应该是
int ret = 0;
for(int i=0; i<10; i++)
{
ret += sprintf(buff+ret, "%d", z[i]);
}
代码片段只是一个示例。请确保您进行了充分的错误检查。
另一个建议是使用snprintf,它比 sprintf 更安全。
首先,不要使用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();
应该做的伎俩。