这可能非常简单,但我试图用这样的变量定义:
char *temp[50];
要改变它我会做的事情如下:
strcpy(temp[1],"Hi");
但是这种细分有问题。
我试过了&temp[1]
,但这不起作用。任何人都可以指出我正确的方向。
编辑:在阅读评论和答案后,我决定发布更多信息。
我想要做的是有50个字符(所以我可以将char * temp1,char * temp2等)只放在一个中,所以它会从char * temp1,char * temp2等转到char * temp [50]
答案 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
的结果!
(*)当strdup
为NULL
或全局时,指针全部为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];