我有一个 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);
两者都失败,即目标为空(编译成功)。为什么上面的方法失败了,我该如何克服这个问题?
我在堆栈中同时拥有结构体和字符数组,因为一旦退出函数我就不需要它们了。在分配内存之前,我已将内存分配给 my_struct.my_string
。
最佳答案
如果 char_arr
是 char[N]
类型,则 malloc
数组为 sizeof(char_arr)/sizeof(char_arr[ 0])
到 my_struct.my_string
。然后使用 strcpy 复制每个索引处的值。完成后终于免费
。
关于char 数组转换为结构内的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9845340/