我被要求创建一个carinfo
结构和一个createcarinfo()
函数来创建一个数据库但是当试图为品牌和车型的数组分配内存时,终端指出了两个错误。
为
newCar->brand =(char*)malloc(sizeof(char)*(strlen(brand) + 1));
newCar->model = (char*)malloc(sizeof(char)*(strlen(model) + 1));
它说有一个错误:用数组类型和指向等号的箭头指定表达式。
struct carinfo_t {
char brand[40];
char model[40];
int year;
float value;
};
struct carinfo_t *createCarinfo(char *brand, char *model, int year, float value){
struct carinfo_t *newCar;
newCar=(struct carinfo_t*)malloc( sizeof( struct carinfo_t ) );
if (newCar){
newCar->brand =(char*)malloc(sizeof(char)*(strlen(brand) + 1));
newCar->model = (char*)malloc(sizeof(char)*(strlen(model) + 1));
strcpy(newCar->brand, brand);
strcpy(newCar->model, model);
//newCar->brand=brand;
//newCar->model=model;
newCar->year=year;
newCar->value=value;
}
return newCar;
};
最佳答案
您正在结构中声明固定大小的数组。
也许你想这么做:
struct carinfo_t {
char *brand;
char *model;
int year;
float value;
};
关于c - 如何解决错误:分配给具有数组类型的表达式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52705675/