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

首先,您需要分配足够的空间来将整个字符串保存在位置空间[0]。当前,您正在分配一个字符。完成此操作后,您将使用 strcpy() 将字符串复制到新分配的缓冲区中。

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

PS:在为新字符串分配之前,不要忘记在空间 [0] 处释放()任何先前分配的字符串(就像您在 for() 循环中创建的字符串)。或者你可以使用 realloc() 代替。

于 2012-08-17T19:48:00.887 回答
0

c[0]是类型char *。你要么需要做,c[0][0]要么(char) c

于 2012-08-18T04:17:33.607 回答