我在尝试将md数组分配到struct md数组时遇到了麻烦。 基本上是:
typdef struct {
int num;
char array[30][80];
} Vars;
然后在main中我做了一些解析来制作一个字符串数组,这个字符串是strArray,也是[30] [80]。但是,当我尝试这样做时
char strArray[30][80] = {"example", "text"};
Vars *vars = (Vars *) malloc(sizeof(Vars);
vars->array = strArray;
我一直收到错误
error: incompatible types when assigning to type ‘char[30][80]’ from type ‘char (*)[80]’
我甚至尝试在for循环中逐字符串地执行此操作,但不断收到错误。有任何想法吗?谢谢!
答案 0 :(得分:2)
我不知道你要做什么,但你不能分配给数组。
你可能想要的是
#include <string.h>
size_t i;
for (i = 0 ; i < 80 ; i++)
strcpy(vars->array[i], strArray[i]);
答案 1 :(得分:0)
Vars vars = (Vars *) malloc(sizeof(Vars);
甚至没有编译。希望你的意思是:
Vars *vars = malloc( sizeof *vars );
现在,无法按值分配数组。要制作数组的副本,您必须使用可以处理数组的函数。一种方法是:
STATIC_ASSERT( sizeof vars->array == sizeof strArray );
memcpy(&vars->array, &strArray, sizeof strArray);
如果您不想复制数据,请考虑让Vars
包含指针而不是数组;那么你可以在strArray
处指出这一点。类型为char (*array)[80];
。
另一种选择是strArray
实际上是Vars
结构(即使你不使用num
);然后你可以使用结构分配来进行复制。