分配给char * [50]?

时间:2012-03-10 11:55:32

标签: c arrays char

这可能非常简单,但我试图用这样的变量定义:

char *temp[50];

要改变它我会做的事情如下:

strcpy(temp[1],"Hi");

但是这种细分有问题。 我试过了&temp[1],但这不起作用。任何人都可以指出我正确的方向。

编辑:在阅读评论和答案后,我决定发布更多信息。

我想要做的是有50个字符(所以我可以将char * temp1,char * temp2等)只放在一个中,所以它会从char * temp1,char * temp2等转到char * temp [50]

4 个答案:

答案 0 :(得分:2)

你只创建了一个指针数组,它们没有特别指向任何东西。您需要在temp[1] 之前将内存分配给malloc,可能通过strcpy

temp[1] = malloc(3); /* Hi\0 */

答案 1 :(得分:1)

发生段错误是因为temp[1]最初指向无处(*)。做

temp[1] = malloc(sizeof("Hi"));
// check for errors
strcpy(temp[1], "Hi");

或者,在POSIX平台上

temp[1] = strdup("Hi");

不要忘记free {/ 1}}和/或malloc的结果!

(*)当strdupNULL或全局时,指针全部为temp,或包含随机垃圾。

答案 2 :(得分:1)

使用malloc()或修复2d数组(实际上是1d)。

 char temp[10][50]={0};

 strcpy(temp[1],"Hi");

 printf("%s", temp[1]);

答案 3 :(得分:1)

您声明指针数组。您需要在堆栈上分配内存:

temp[1] = "Hi";

或在堆上:

temp[1] = malloc(sizeof("Hi"));

或许您可能只想声明char数组:

char temp[50];