我创建了一个程序来将 2 种类型的项目添加到系统中。我为 2 个不同的项目创建了 2 个结构。目前我已经创建了一种向系统添加项目的方法,并将每个项目存储在一个数组中。但是,当我要实现删除功能时遇到了一个问题,问题是如果我在数组内存索引 2 处有一条记录,如果我删除它,那么在内存索引 1 和 3 之间会有一个未使用的空间。我该如何克服这个 ?在 java 中,有一个动态分配空间的arraylist。在 C 中我知道有动态内存分配,但我如何使用删除功能来实现它?
这是我到目前为止所做的:-
#include <stdio.h>
#include <string.h>
struct routers
{
int Device_No;
char Device_Name[30];
int No_of_items;
int Price;
char Description[30];
};
/**declared an of struct routers to store the structure objects
**/
struct routers routerlist[5];
struct controllers
{
int Device_No;
char Device_Name;
int No_of_items;
int Price;
char Description[30];
};
void AddNewItem();
int main()
{
AddNewItem();
return 0;
}
void AddNewItem(){
int item;
int choice=0;
int arraysize=0;
do{
printf("Press 1 to add a Router \nPress 2 to add a controller \n");
scanf("%d",&item);
printf("%d",item);
if(item==1){
printf("\nEnter Device No:\n");
scanf("%d",&routerlist[arraysize].Device_No);
printf("Enter Device Name\n");
fflush(stdin); //flush the buffer
gets(routerlist[arraysize].Device_Name);
printf("Enter Number of Items\n");
scanf("%d",&routerlist[arraysize].No_of_items);
printf("Enter price\n");
scanf("%d",&routerlist[arraysize].Price);
printf("Enter description\n");
fflush(stdin);
gets(routerlist[arraysize].Description);
}
arraysize++;
printf("Do you want to add another item? \nPress 1 to add \nPress 2 to Cancel\n");
scanf("%d",&choice);
}while(choice==1);
}
感谢您的时间。