一直在javase这边待着,不知道c语言去哪里问呀,感觉大家应该有一部分是从c语言走过来的把 希望帮帮忙呀void Selldelete()
{   struct ima i[1000];
struct ima temp;
int delID;
char choice;
int index=0;
int j=0;
FILE *fp;
fp=fopen("ima.date","r");
if(fp==NULL)
{
printf("\t\t\t系统错误,请您重试........");
exit(0);
}


fread(&temp,sizeof(struct ima),1,fp);
while(!feof(fp))
{
i[index]=temp;
index++;
fread(&temp,sizeof(struct ima),1,fp);
}
fclose(fp);

printf("\n\t请输入要删除的物品的编号:");
scanf("%d",&delID);
fopen("f:\\ima.date","w");
if(fp==NULL)
{
printf("\t\t\t系统错误,请您重试........");
exit(0);
}
for( j=0;j<index;j++)
{
if(i[j].id!=delID)
{
fwrite(&i[j],sizeof(struct ima),1,fp);
}
}
    fclose(fp);
printf("\t\t\t\t\t物品信息已清除!!!\n");

printf("\n您想继续吗?(y/n)");
scanf(" %c",&choice);
if(choice=='Y'||choice=='y')
{
Selldelete();
}
else
{
system("cls");
menu();
}
}我想实现删除功能,可惜不知道为什么 怎么都无法删除  求解答!

解决方案 »

  1.   

    这段之前还有这个
    int validateID(int id)
    {   
    FILE *fp;
    struct ima i;
    fp=fopen("ima.date","r");
    if(fp==NULL)
    {
    printf("\t\t\t系统错误,请您重试........");
    exit(0);
    }

    fread(&i,sizeof(struct ima),1,fp);
    while(!feof(fp))   //输入输出函数,检查文件是否结束,如结束,则返回非零值,否则返回0
    {
    if(i.id==id)
    {
    fclose(fp);
    return 1;
    break;
    }
    fread(&i,sizeof(struct ima),1,fp);
    }
    fclose(fp);
    return 0;
    }
    void Append()
    {   struct ima i;
    char choice;
    FILE *fp;
    fp=fopen("ima.date","ab");
    if(fp==NULL)
    {
    printf("\t\t\t系统错误,请您重试........");
    exit(0);
    }

      labID:
    printf("\n\t请您输入要入库物品的信息...\n");
    printf("\t\t\t\t   物品的编号:");
    scanf("%d",&i.id);
    if(validateID(i.id)==1)
    {
    printf("\t\t\t\t此编号已被使用,请您重新输入......");
    goto labID;
    }
    printf("\t\t\t\t   物品的名称:");
    scanf("%s",i.name);
    printf("\t\t\t\t   物品的生产地:");
    scanf("%s",i.produce);
    printf("\t\t\t\t   物品的数量:");
    scanf("%d",&i.number);
    printf("\t\t\t\t   物品的单价:");
    scanf("%f",&i.price);
    fwrite(&i,sizeof(struct ima),1,fp);
    fclose(fp);
    printf("\t\t\t\t\t\t  物品信息已入库成功!!!\n");

    printf("\n您想继续吗?(y/n)");
    scanf(" %c",&choice);
    if(choice=='Y'||choice=='y')
    {
    Append();
    }
    else
    {
    system("cls");
    menu();
    }
    }
      

  2.   

    不会干嘛不发到C版块去呢。PS:LZ请注意按时结贴。
      

  3.   

    http://forum.csdn.net/SList/C/c语言版块
      

  4.   

    fwrite(&i[j],sizeof(struct ima),1,fp);
    不记得fwrite怎么用了,这条时候fp指哪儿呢?文件尾?if(choice=='Y'||choice=='y')
        {
            Append();
        }
    这还递归?循环吧
      

  5.   

    8楼后半段打错了    if(choice=='Y'||choice=='y')
        {
            Selldelete();
        }
    这还递归?循环吧
      

  6.   

    其实把  我真他妈懒的说了
    我不会结贴 刚才看到3楼的话之后 我去结贴了  然后你们就jb根据结贴说来说去?有意思么?
    你们是小学生么?发java的东西 都jb懒的回答 
    发C语言竟jb BB没用的 
    你们是sb么  以后不来这里了   一群废物