我试图在嵌套结构中分配一个const char *值。我想将名称和名字分配给char值,而不是字符串。这是我知道的更多,但我使用的是c ++。 这是我的问题:
struct person {
const char* name;
const char* firstname;
};
struct person_struct {
int pers_num;
struct person* data;
};
// How does the assignment work?... i know this is wrong:
char name[100] = "Jason";
char firstname[100] = "Conner";
struct person_struct pers_info;
pers_info.pers_num = 1;
pers_info->data->name = new char[strlen(name)+1];
pers_info->data->firstname = new char[strlen(firstname)+1]
非常感谢你的帮助,大家! : - )
[编辑:
错误:
error: expected constructor, destructor, or type conversion before â.â token
error: expected constructor, destructor, or type conversion before â->â token
error: expected constructor, destructor, or type conversion before â->â token
答案 0 :(得分:1)
strdup()将是一种方法(将其保持在普通C中)
当然首先需要分配足够数量的人物结构
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef struct person_ {
const char* name;
const char* firstname;
} person;
struct person_struct {
int pers_num;
person* data;
} PS;
int main(void) {
char name[100] = "Jason";
char firstname[100] = "Conner";
PS.pers_num=1;
// added cast here
PS.data = (person*)calloc(PS.pers_num, sizeof(person));
PS.data[0].name = strdup(name);
PS.data[0].firstname = strdup(firstname);
puts(PS.data[0].name);
puts(PS.data[0].firstname);
return 0;
}
答案 1 :(得分:0)
编译错误是因为你写了pers_info->data
;但pers_info
不是指针。 ->
运算符仅适用于指针。你的意思是pers_info.data
。
然而,整个设置很糟糕。使用std::string
存储字符串。并使data
不是指针。然后,所有内存分配都得到了处理,您可以专注于使代码按照您希望的方式执行。