我有这个结构:
#define sbuffer 128
#define xbuffer 1024
typedef struct{
char name[sbuffer];
char att[sbuffer];
char type[sbuffer];
int noOfVal;
int ints[xbuffer];
double doubles[xbuffer];
char *strings[xbuffer];
} variable;
我需要从这个结构创建一个数组,我做了这个
variable *vars[512]; //is it right
如果我想将s中包含的字符串放入名称中,我就这样做了:
char *s = "What Ever";
strcpy(vars[0]->name,s);
但这对我不起作用,有人可以帮忙吗?
答案 0 :(得分:5)
摆脱这一行中的*
:
variable *vars[512]; //is it right
使用点语法访问strcpy
中的结构成员:
char *s = "What Ever";
strcpy(vars[0].name,s);
答案 1 :(得分:1)
您已经为您的struct分配了一个指针数组,但从未创建过它们的实例(已分配的内存)。你可以使它成为一个结构数组(没有指针),所以你不必担心内存管理。
char *s = "What Ever";
variable vars[512]; /* an array of your structure */
strcpy(vars[0].name,s); /* <- use dot operator here since they are no longer pointers */
或者至少在使用它之前为结构分配内存(并初始化所有其他指向NULL
的内容)。
char *s = "What Ever";
variable *vars[512]; /* an array of pointers to your structure */
vars[0] = (variable *)malloc(sizeof(variable)); /* dynamically allocate the memory */
strcpy(vars[0]->name,s); /* <- used arrow operator since they are pointers */
答案 2 :(得分:0)
我认为你需要使用
variable vars[512];
而不是
variable *vars[512]
答案 3 :(得分:0)
variable *vars[512] = {NULL};
int i = 0;
//i may get a value in some way
if (NULL == vars[i]){
vars[i] = (variable *)malloc(sizeof(struct variable));
}