2012-03-12 12 views
0

ここでは、私が何をしようとしています何の非常に単純な例です:Cで多次元配列ポインタを移動する - 互換性のない型

#include <stdio.h> 

int main() { 
    char a[2][2][5] = { {"hello", "world"}, {"again", "test1"}}; 

    a[1] = a[0]; 

    printf("a[0][0]: %s\n", a[0][0]); 
    printf("a[0][1]: %s\n", a[0][1]); 
    printf("a[1][0]: %s\n", a[1][0]); 
    printf("a[1][1]: %s\n", a[1][1]); 
} 

私は印刷にそれを期待: [0] [0]:こんにちは [0] [1]:世界 [1] [0]:こんにちは [1] [1]:世界代わり

は私が得るすべては、あなたがしなければならない、あなたが配列を割り当てることができませんerror: incompatible types in assignment

答えて

1

ですコピーする(memcpyまたはmemmoveを使用)

memcpy(a[1], a[0], sizeof(a[0])); 

また、文字列のサイズは、5ではなく6です(暗黙のヌルターミネータがあります)。

+0

ありがとう、暗黙のnull charを忘れてしまいましたが、これは明らかに実例です:) –

0

配列を割り当てることはできません。しかし、構造体を割り当てることができます:

struct Foo 
{ 
    char data[2][5]; 
}; 

struct Foo b, a = { { "hello", "world" } }; 
b = a; 

struct Foo c[2] = { { { "hello", "world" } }, { {"again", "test1"} } }; 
c[1] = c[0];