指针和字符数组

时间:2012-08-17 19:43:41

标签: c arrays pointers char

我有一个指向字符数组的指针:

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

我做错了什么?

2 个答案:

答案 0 :(得分: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:在分配新字符串之前,不要忘记free()任何先前在space [0]分配的字符串(就像你在for()循环中创建的那样)。或者你可以改用realloc()。

答案 1 :(得分:0)

c[0]属于char *类型。您需要执行c[0][0](char) c