字符串作为c中的参数

时间:2016-04-05 11:29:41

标签: c arrays string pointers

我有一个包含命令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]时说"不兼容的类型。

请帮帮我。

3 个答案:

答案 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*

您想要的是strcpy / strncpy