【发布时间】:2012-03-23 19:25:40
【问题描述】:
我有一个 4 个字符的数组,例如:
char char_array[10];
char_arr[0] = 'a';
char_arr[1] = 'b';
char_arr[2] = 'c';
char_arr[3] = 'd';
char_arr[4] = '\0';
我有一个结构:
typedef struct{
int my_int;
char *my_string;
} my_struct_t;
my_struct_t my_struct;
my_struct.my_string = malloc(10);
我想将 char 数组分配给字符串 my_struct.my_string
我该怎么做?我尝试了以下方法:
尝试:1
my_struct.my_string = malloc(10)
my_struct.my_string[0] = char_arr[2];
my_struct.my_string[1] = char_arr[2];
my_struct.my_string[2] = '\0';
尝试:2
strcpy(my_struct.my_string, char_arr);
两者都失败,即目标为空(编译成功)。为什么上述失败,我该如何克服?
我在堆栈中同时拥有 struct 和 char 数组,因为一旦我退出函数,我就不需要这些了。在分配之前,我已将内存分配给my_struct.my_string。
【问题讨论】:
-
如何分配
char_arr? -
@Vijay 你所说的失败到底是什么意思?发布确切的编译器错误消息。
-
能否请您在调试器中查看,
my_struct.my_string[0]在my_struct.my_string = malloc(10); my_struct.my_string[0] = char_arr[2];之后的值是多少?这段代码似乎是正确的。
标签: c string string-concatenation arrays