2017-02-17 11 views
0

CryptoTables 2D配列の特定の文字列コンテンツをコピーする必要があります。ここ多次元配列の内容を単一配列にコピー

は、2次元アレイである: -

#define CRYPTOENTRIES 10 
unsigned char CryptoTables [CRYPTOENTRIES][7]= {"Sgehd", 
               "Fshdj", 
               "Hdbdh", 
               "Gshsi", 
               "Hiufs", 
               "Rtygd", 
               "Tyygf", 
               "Gfftn", 
               "Ffyhs", 
               "Fghhx"}; 

別の単一のアレイ列(char array[10];)に上記所与の2Dアレイの任意の特定の位置の内容をコピーする方法は?

たとえば、CryptoTablesに3番目の文字列をコピーする必要がある場合、別の配列文字列にHdbdhをコピーする必要があります。

+2

'strcpy(配列、CryptoTables [2]);'。 – mch

答えて

0

あなたは2次元配列の各行にアクセスすることができますfooとしてfoo[i]。終端\0バイトを含むCryptoTables[2]が指している文字列を保持するのに十分な大きさでなければならない

char bar[7]; 
strcpy(bar, CryptoTables[2]); 

配列bar
だからあなたはこのコードを使用することができますCryptoTablesの第三の文字列をコピーします。

-1

すべてのエントリの長さは5文字なので、新しい配列はchar arr[6](5文字+ヌルターミネータバイト)にする必要があります。あなたはそれをコピーしたい場合は、単に希望の文字列対処:CryptoTables[2](第3の場所に)、そしてarrにコピーしstrncpyを使用 - ここでそれについて読む:

http://fresh2refresh.com/c-programming/c-strings/c-strncpy-function/

+1

'strcpy'は' CryptoTables [2] 'が指し示す文字列を' arr'が指すバッファに、終端のヌルバイト '\ 0'を含めてコピーします。しかし、 'arr'の長さが' 5'であるので、 'buffer overrun'につながります。 – rootkea

+0

あなたは正しいです、それを書く時間がありませんでした。それを追加する –