我有一个指向字符数组的指针:
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
我做错了什么?
答案 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
。