我对结构很新,我正在努力建立一个网上商店。我有一个结构,其中包含产品,ID,价格和指向下一个的指针。
struct product_t
{
char *product;
int id;
float price;
struct product_t *next;
};
我被要求创建一个如下所示的创建函数:
struct product_t *createProduct(char *data, int id)
所以我想到创建一个名为data的新结构,其中的指针引用了产品结构:
struct data {
struct product_t *product;
struct product_t *price;
struct product_t *id;
struct data *next;
};
但是当我像下面的方法一样使用create函数时,我会遇到错误:
struct product_t *createProduct(char *data, int id) {
struct data *New = malloc(sizeof(struct data));
New->product = (char*) malloc(sizeof(char)*sizeof(data)+1);
strcpy(New->product, data);
New->price = price;
New->id = id;
return New;
}
编辑:
我现在看到我还不太清楚。我确实知道如何手动分配内存和东西。但重点是数据变量实际上包括价格和产品。这就是我被困住的地方,因为我不知道什么和什么不分配给内存。
有谁知道我做错了什么?我希望如果我已经足够清楚,如果不让我知道。在此先感谢:)
答案 0 :(得分:1)
从这样的事情开始:
#include <stdlib.h>
#include <string.h>
struct product_t
{
char* data;
int id;
};
struct product_t* createProduct(char* data, int id)
{
struct product_t *product = malloc(sizeof(struct product_t));
product->data = strdup(data); // Assumes that data is a \0 terminated string.
product->id = id;
return product;
}
void deleteProduct(struct product_t* product)
{
free(product->data);
free(product);
}
待办事项:
data
不是NULL
。Groetjes en succes!
答案 1 :(得分:0)
我想你真的想要做以下事情:
struct product_t {
char *product;
double price;
int id;
struct product_t *next;
};
struct product_t *createProduct(char *name, double price, int id) {
struct product_t *New = (product_t*) malloc(sizeof(struct product_t));
New->product = (char*) malloc(strlen(name)+1);
strcpy(New->product, name);
New->price = price;
New->id = id;
return New;
}