我试图在嵌套结构中分配const char*值。我想把name和firstname赋值给一个char值,而不是字符串。这是更多的c我知道,但我使用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
strdup()将是一种方法(将其保持在普通C中)
当然首先你需要分配足够数量的person结构体
#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;
}
编译错误是因为您编写了pers_info->data
;但是pers_info
不是指针。->
操作符只适用于指针。你指的是pers_info.data
。
然而,这整个设置是可怕的。使用std::string
存储字符串。并使data
不是指针。然后,所有的内存分配都得到了处理,您可以专注于使代码做您想要它做的事情。