#c 错误:不显示修改成功

void modify1(Gun *h,int gcoding,int gtime,char *gname,char *gattribute)
{
Gun *gun;
int isfound=0;
gun=h->next;
Gun *newnode;
/*while(gun!=NULL)
{

    if(gun->coding==gcoding)
    {
        newnode->time=gtime;
        strcpy(gun->name,gname);
        strcpy(gun->attribute,gattribute);
        isfound=1;
        break;
    }
    else
        gun=gun->next;
}*/
if(isfound==0)
{
     insert2(h);
     printf("【此军械信息已经修改成功】\n\n");
}
else
    printf("【没有找到此军械信息,无法修改!请及时处理!!!】\n\n");

}

void modify(Gun *h)
{
int gcoding,gtime;
char gname[20],gattribute[20];
printf("【请填写要修改枪支的编码】\n\n");
scanf("%d",&gcoding);
printf("【请填写修改枪支的信息,请用空格隔开:】\n\n");
printf("【入库时间】【军械名称】【军械属性】\n\n");
scanf("%d %s %s",gtime,gname,gattribute);
modify1(h,gcoding,gtime,gname,gattribute);
}

//查询军械信息

img

应该是你的insert写错了,程序执行inser直接异常退出了

供参考:

void modify1(Gun* h, int gcoding, int gtime, char* gname, char* gattribute)
{
    Gun* gun;
    int isfound = 0;
    gun = h->next;
    //Gun* newnode;    修改
    while (gun != NULL)
    {
        if(gun->coding==gcoding)
        {
            gun->time = gtime; //newnode->time=gtime; 修改
            strcpy(gun->name,gname);
            strcpy(gun->attribute,gattribute);
            isfound = 1;
            break;
        }
        //else  修改
        gun = gun->next;
    }
    if (isfound != 0)  //if (isfound == 0) 修改
    {
        //insert2(h);
        printf("【此军械信息已经修改成功】\n\n");
    }
    else
        printf("【没有找到此军械信息,无法修改!请及时处理!!!】\n\n");
}

void modify(Gun* h)
{
    int gcoding, gtime;
    char gname[20], gattribute[20];
    printf("【请填写要修改枪支的编码】\n\n");
    scanf("%d", &gcoding);
    printf("【请填写修改枪支的信息,请用空格隔开:】\n\n");
    printf("【入库时间】【军械名称】【军械属性】\n\n");
    scanf("%d %s %s", &gtime, gname, gattribute);
    //scanf("%d %s %s", gtime, gname, gattribute);修改
    modify1(h, gcoding, gtime, gname, gattribute);
}

输入少了一个&,看看是不是这个问题。


scanf("%d %s %s",gtime,gname,gattribute);

改成:

scanf("%d %s %s",&gtime,gname,gattribute);