-2

私は非常に単純なことを試みています(私は思う)、charにintの配列を出力します。次のようなものです:

 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、. を使用すると、 の各値を文字列に入れることができます。%dintsprintfZ

#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]);
}

コード スニペットは単なる例です。エラーチェックを十分に行ってください。

もう 1 つの提案は、sprintf のより安全な代替手段であるsnprintfを使用することです。

于 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 に答える