char [] 配列を取り、その値を別の配列にコピーする必要がありますが、毎回失敗します。
次の形式を使用して動作します。
char array[] = { 0x00, 0x00, 0x00 }
ただし、これを実行しようとすると:
char array[] = char new_array[];
new_array は元の配列とまったく同じですが、失敗します。
どんな助けでも親切にいただければ幸いです。
ありがとう
char [] 配列を取り、その値を別の配列にコピーする必要がありますが、毎回失敗します。
次の形式を使用して動作します。
char array[] = { 0x00, 0x00, 0x00 }
ただし、これを実行しようとすると:
char array[] = char new_array[];
new_array は元の配列とまったく同じですが、失敗します。
どんな助けでも親切にいただければ幸いです。
ありがとう
実行時にコピーするには、通常の C メソッドはstrncpy
またはmemcpy
関数を使用します。
char
コンパイル時に2 つの配列を同じ定数初期化子に初期化する必要がある場合は、次のように使用することに行き詰まっている可能性があり#define
ます。
#define ARRAY_INIT { 0x00, 0x00, 0x00 }
char array[] = ARRAY_INIT;
char new_array[] = ARRAY_INIT;
通常はより良い実装があるため、これが行われることはめったにありません。
EDIT:さて、実行時に配列をコピーしたいと思います。これは、 (すべての場所の)memcpy
一部で行われます。<string.h>
私が正しく読んでいれば、次のような初期条件があります。
char array[] = { 0x00, 0x00, 0x00 };
char new_array[] = { 0x01, 0x00, 0xFF };
次に、配列の内容を変更して何かを行い、それが完了したらarray
、 match に設定しnew_array
ます。それはまさにこれです:
memcpy(new_array, array, sizeof(array));
/* ^ ^ ^
| | +--- size in bytes
| +-------------- source array
+-------------------------destination array
*/
ライブラリの作成者は、割り当てと同じ順序であるため、最初に目的地で引数を並べることを選択しました: destination = source
。
このようなプリミティブ配列を使用して C、Objective-C、または C++ の配列をコピーする言語レベルの組み込み手段はありません。C++ は人々に の使用std::vector
を奨励し、Objective-C は の使用を奨励していますNSArray
。
しかし、私はまだあなたが何を望んでいるのか正確にはわかりません.