我有一个包含命令char var_name[200];
的结构和一个在它之后的typedef(typedef struct list_var* data
),我有一个获取参数char* var
的函数。在这个函数中,我尝试以下方法:
data new_var = (data) malloc(sizeof(struct list_var));
new_var->var_name = var
但是在这一行中我收到一个错误,在从char *类型指定类型char [200]时说"不兼容的类型。
请帮帮我。
答案 0 :(得分:3)
查看此帖子:Char array in a struct - incompatible assignment?
在C中无法分配数组。您需要使用strcpy
。
strcpy(new_var->var_name, var);
答案 1 :(得分:1)
使用strcpy
复制字符串:
strcpy(new_var->var_name, var);
答案 2 :(得分:0)
data new_var = (data) malloc(sizeof(struct list_var));
您现在为struct data
分配了内存,其中包含200个字符的内存,数组new_var->var_name
。
new_var->var_name = var;
现在你要为一个200个字符的数组分配一个char *
- 即一个指针。
是的,是的,我知道,我们称之为字符数组和字符指针"字符串"有时,但这只是一种心理捷径,它使我们经常认为是错误的事情。
你不会期望在这里工作:
int array[200];
int x = 42;
array = &x;
为什么它适用于char[]
/ char*
?