2

文字配列へのポインターがあります。

space=(char**)calloc(100000,sizeof(char*));
for(i=0;i<100000;i++){
    space[i]=(char*)calloc(1,sizeof(char));
}

次のコマンドを使用すると

printf("%s\n",space[0]);

私は得る"a b c d e"

に割り当て"a b c d e"たい

char c[10];

そのような

printf("%s",c)収量

"a b c d e"

しかし、私がしようとすると

c=space[0]

次のエラーが表示されます。

incompatible types in assignment

私は何を間違っていますか?

4

2 に答える 2

2

最初に、場所 space[0] に文字列全体を保持するのに十分なスペースを割り当てる必要があります。現在、単一の文字を割り当てています。その後、strcpy() を使用して、新しく割り当てられたバッファーに文字列をコピーします。

space=(char**)calloc(100000,sizeof(char*));
...
space[0]=(char*)calloc(10,sizeof(char));
strcpy(space[0], "a b c d e");

PS: 新しい文字列を割り当てる前に、以前に割り当てられた文字列 (for() ループで作成したものなど) を space[0] で free() することを忘れないでください。または、代わりに realloc() を使用できます。

于 2012-08-17T19:48:00.887 に答える
0

c[0]のタイプchar *です。c[0][0]またはする必要があります(char) c

于 2012-08-18T04:17:33.607 に答える