#include<stdio.h>
#include<stdlib.h>
void Delect();
vod modify();
mian()
{
void Delect();
void Midify();
}
void Delect()
{ int k;
char name[20];
int i,j=0;
start:
printf(" 请输入要删除的电影名:");
scanf("%s",name);
while(strcmp(mov[i].name,name)!=0&&i<n)
{
i++;}
if(i<n)
{
for(j=i;j<n-1;j++)
{
strcpy(mov[j+1].name,mov[j].name);
}
n--;
printf("已删除电影信息!\n");}
else
{printf("查无此电影") ;
}
scanf("%d",&k);
if(k)
{goto start;
}
}
void Modify()
{int i=0,j;
int k;
char no[20],name[20],type[20],mfrs[20],dir[20],actor[20],state[20];
int time;
system("cls");
FILE * fp;
fp = fopen("movie.text", "a+");
rewind(fp);
while (!feof(fp))
{
fscanf(fp, "%s%s%s%s%s%s%d%s\n",&mov[i].no,&mov[i].name,&mov[i].type,&mov[i].mfrs,&mov[i].dir,&mov[i].actor,&mov[i].time,&mov[i].state);
printf("%s\t%s\t%s\t%s\t%s\t%s\t%d\t%s\n", mov[i].no,mov[i].name,mov[i].type,mov[i].mfrs,mov[i].dir,mov[i].actor,mov[i].time,mov[i].state);
}
start :
printf("请输入电影编号 : ");
scanf("%s",no);
while(strcmp(mov[i].no,no)!=0&&i<n)
{
i++;}
if(i<n)
{
printf("-------------------修改前的电影信息--------------------------------\n");
printf("编号 电影名 电影类型 制造商 导演 主演 发行时间 国家\n");
printf("-------------------------------------------------------------------\n");
printf("%-10s%-10s%-10s%-10s%-10s%-10s%-10d%-10s\n",mov[i].no,mov[i].name,mov[i].type,mov[i].mfrs,mov[i].dir,mov[i].actor,mov[i].time,mov[i].state);
printf("开始修改\n");
printf("输入电影编号:");
scanf("%s",&mov[n].no);
printf("输入电影名:");
scanf("%s",&mov[n].name);
printf("输入电影类型:");
scanf("%s",&mov[n].type);
printf("输入制造商:");
scanf("%s",&mov[n].mfrs);
printf("输入导演:");
scanf("%s",&mov[n].dir);
printf("输入主演:");
scanf("%s",&mov[n].actor);
printf("输入发行时间(单位:年):");
scanf("%d",&mov[n].time);
printf("输入国家:");
scanf("%s",&mov[n].state);
printf("-------------------修改后的电影信息--------------------------------\n");
printf("编号 电影名 电影类型 制造商 导演 主演 发行时间 国家\n");
printf("-------------------------------------------------------------------\n");
printf("%-10s%-10s%-10s%-10s%-10s%-10s%-10d%-10s\n",mov[i].no,mov[i].name,mov[i].type,mov[i].mfrs,mov[i].dir,mov[i].actor,mov[i].time,mov[i].state);
}else
{printf("查无此电影");
}
scanf("%d",&k);
if(k)
{goto start;
}
}
删除和修改都有问题,该怎么改正。
修改你直接该数组成员的值就可以了,删除的话把被删除元素之后的所有元素都向前移动一位,然后数组大小减去1就可以了
你这问题也太笼统了,而且代码没有一点逻辑性,你保存的电影信息是一个一维结构数组,不是一个链表,所以删除只需要遍历数组把符合条件的元素置空就可以了,其他什么也不用改,修改就更简单了把元素结构改成要修改的就行了