删除C中结构问题的元素数组
我在删除C中结构数组的一个元素时遇到问题。因此,我有一个程序有两个选项,添加和删除。问题是,当我从struct数组中删除一个元素并添加另一个元素时,输出将显示我以前删除的元素,而我添加的新元素没有显示。我如何解决这个问题 这是我试图制作的程序删除C中结构问题的元素数组,c,arrays,struct,C,Arrays,Struct,我在删除C中结构数组的一个元素时遇到问题。因此,我有一个程序有两个选项,添加和删除。问题是,当我从struct数组中删除一个元素并添加另一个元素时,输出将显示我以前删除的元素,而我添加的新元素没有显示。我如何解决这个问题 这是我试图制作的程序 #include "stdio.h" struct itemlist { char name[25]; int quantity; }; int main() { int progress,processNum,i,sizeSt
#include "stdio.h"
struct itemlist
{
char name[25];
int quantity;
};
int main()
{
int progress,processNum,i,sizeStruct = 0;
struct itemlist items[105];
printf("How many progress you want to do?\n");
scanf("%d",&progress); getchar();
for(i = 0; i < progress ; i++){
scanf("%d",&processNum); getchar();
switch (processNum){
case 1: // Add
printf("Name of item :\n");
scanf("%[^\n]",items[i].name); getchar();
printf("How many items?:\n");
scanf("%d",&items[i].quantity); getchar();
sizeStruct++;
printf("Success to add!!\n");
break;
case 2: // Delete from database, and its last index can be replaced.
int index3;
printf("Which index do you wanna delete?\n");
scanf("%d",&index3); getchar();
for(int k = index3-1; k < sizeStruct - 1; k++){
items[k] = items[k + 1];
}
sizeStruct--;
printf("Your item has been deleted.\n");
break;
}
}
// Print All last Items
printf("Items: \n");
for(int j = 0; j < sizeStruct; j++){
printf("%s\n",items[j].name);
}
return 0;
}
但我的程序正在运行,而删除后我没有添加任何项目。如何解决此问题?您总是在位置i添加一个项目,但当您删除一个项目时,您将数组向左移动了一个位置,覆盖了要删除的项目,但您没有更新i。 当您要删除项目2时,for循环 对于(int k=index3-1;k
i : 0 1 2 3
item: Cola-Cola Sprite /*Garbage*/ Beer
最后只打印前两项
您可能希望在“case2”中添加i-=2,因此i是应该添加新项的位置。
还请注意,在您的示例输入/输出中,当您删除项目2时,您会覆盖“Sprite”并添加“Beer”,因此预期输出为
Items:
Cola-Cola
Beer
Items:
Cola-Cola
Beer