【问题标题】:Pointers and Character Array指针和字符数组
【发布时间】:2012-08-17 19:43:41
【问题描述】:

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

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

我做错了什么?

【问题讨论】:

  • 您不能分配给数组。使用 char * 代替,或使用 strcpy 将 space[0] 的内容复制到 c 中。
  • 不要在 C 中强制转换 malloc 的返回值
  • 我看不出您如何使用上述代码从该 printf 中获取 "a b c d e"。而且我看不出你到底想做什么。

标签: c arrays pointers char


【解决方案1】:

首先,您需要分配足够的空间来将整个字符串保存在位置空间[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() 代替。

【讨论】:

    【解决方案2】:

    c[0] 的类型为 char *。你要么需要c[0][0]要么(char) c

    【讨论】:

      猜你喜欢
      • 2011-06-26
      • 1970-01-01
      • 2015-08-12
      • 1970-01-01
      • 1970-01-01
      • 2012-02-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多