我一直在嘗試幾個小時才能使該函數正常工作。這裏的任務:動態分配的數組結構
Add: Request the part name, price, and quantity. Save the information to a dynamically allocated array of structs. You may allocate space for up to 3 structs at a time. You will need to create more memory dynamically as needed. Use this struct (you may use typedef if you want to):
到目前爲止我的代碼是
typedef struct {
char* name;
float price;
int quantity;
}part;
void add(part *item, int *part_count)
{
//char temp[100];
if (!item){
item = malloc(sizeof(part)*3);
}
else{
item = realloc(item, sizeof(part) * ((*part_count*3) + 1));
}
item[*part_count].name = malloc(sizeof(char)*64); // max of 64 characters
printf("Please enter item name: \n");
//fgets(temp, strlen(temp), stdin);
//sscanf(temp, "%s", item[*part_count].name);
scanf("%64s", item[*part_count].name);
printf("Please enter item price: \n");
//fgets(temp, strlen(temp), stdin);
//sscanf(temp, "%f", &item[*part_count].price);
scanf("%f", &item[*part_count].price);
printf("Please enter item quantity: \n");
//fgets(temp, strlen(temp), stdin);
//sscanf(temp, "%d", &item[*part_count].quantity);
scanf("%d", &item[*part_count].quantity);
*part_count = *part_count+ 1;
}
我曾試圖採取與fgets()
和sscanf()
輸入,但使用的代碼它永遠不會允許用戶輸入數據,然後結束功能。
我相信問題在於我的內存分配,因爲當我嘗試對數組執行任何操作(例如打印內容)時出現分段錯誤。
你會得到哪些線路故障? – 2012-03-08 02:13:13
你如何計算'part_count'?如果是元素的數量,則無法訪問該元素。所以如果你的數組大小爲10,你不能訪問array [10]。 – prelic 2012-03-08 02:13:30
我不知道哪條線我得到seg故障,但我有一個單獨的打印功能,當它運行時它seg故障。我曾問過,但顯然我的打印功能不是問題。 part_count也從0開始,每次調用add時都會增加。 – 2012-03-08 02:20:48