我被要求创建一个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/

10-11 01:04