vzoe_ 2021-12-02 14:32 采纳率: 100%
浏览 57
已结题

我的修改功能是有什么问题吗,为什么运行到填写修改的名字后,就不运行了?

问题遇到的现象和发生背景

```c
void modify() { //修改函数
FILE *fp;
fp=fopen("D:\通讯录.txt","r");
if(fp==0) {
printf("十分抱歉,文件失踪啦(ㄒoㄒ)\n");
exit(1);
}
int i;
char modname[20];
int y=0;
printf("请输入你要修改的人名:\n");
scanf("%s",&modname);
while(!feof(fp)) {
fscanf(fp,"%s%s%s%s%s%s%s\n",s[i].id,s[i].name,s[i].move,s[i].home,s[i].office,s[i].mailbox,s[i].group);
if(strcmp(modname,s[i].name)==0) {
y=1;
break;
}
i++;
}
if(y==0) {
printf("没有此人∑(O_O;)\n");
} else {
printf("已找到的修改人名的所有的信息如下:\n");
puts(title);
printf("%9s %9s %16s %16s %16s %16s %16s\n",s[i].id,s[i].name,s[i].move,s[i].home,s[i].office,s[i].mailbox,s[i].group);
printf("确定修改按4 \n");
printf("放弃修改按任意数字键\n");
int r;
scanf("%r\n",&r);
if(r==4) {
char Newname[20];
printf("请输入你要修改的新名字:\n");
scanf("%s",&Newname);
strcpy(s[i].name,Newname);
char Newmove[20];
printf("请输入你要修改的新移动电话号码:\n");
scanf("%s",&Newmove);
strcpy(s[i].name,Newmove);
char Newhome[20];
printf("请输入你要修改的新移动电话号码:\n");
scanf("%s",&Newhome);
strcpy(s[i].name,Newhome);
char Newoffice[20];
printf("请输入你要修改的新办公室电话号码:\n");
scanf("%d",&Newoffice);
strcpy(s[i].office,Newoffice);
char Newmailbox[20];
printf("请输入你要修改的新邮箱:\n");
scanf("%s",&Newmailbox);
strcpy(s[i].mailbox,Newmailbox);
char Newgroup[20];
printf("分组有未知、同事、亲戚、朋友、家人、同学,或者您可以自编分组名,请输入您要修改的分组:\n");
scanf("%s",&Newgroup);
strcpy(s[i].group,Newgroup);
printf("修改成功!\n");
printf("修改后的手机通讯录如下:\n");
print();
}
}
fclose(fp);
}

```问题相关代码,请勿粘贴截图

运行结果及报错内容

img

我的解答思路和尝试过的方法
我想要达到的结果
  • 写回答

2条回答 默认 最新

  • 关注

    (1)int i 没有初始化
    (2)scanf("%s",&modename)去掉&。
    (3)下面所有的scanf中的&都去掉
    (4)scanf("%r\n",&r);改成 scanf("%d",&r);


    代码修改如下

    void modify() { //修改函数
        FILE *fp;
        fp=fopen("D:\通讯录.txt","r");
        if(fp==0) {
            printf("十分抱歉,文件失踪啦(ㄒoㄒ)\n");
            exit(1);
        }
        int i=0; //修改1 初始化i
        char modname[20];
        int y=0;
        printf("请输入你要修改的人名:\n");
        scanf("%s",modname);  //修改2 去掉&
        while(!feof(fp)) {
            fscanf(fp,"%s%s%s%s%s%s%s\n",s[i].id,s[i].name,s[i].move,s[i].home,s[i].office,s[i].mailbox,s[i].group);
            if(strcmp(modname,s[i].name)==0) {
                y=1;
                break;
            }
            i++;
        }
        if(y==0) {
            printf("没有此人∑(O_O;)\n");
        } else {
            printf("已找到的修改人名的所有的信息如下:\n");
            puts(title);
            printf("%9s %9s %16s %16s %16s %16s %16s\n",s[i].id,s[i].name,s[i].move,s[i].home,s[i].office,s[i].mailbox,s[i].group);
            printf("确定修改按4 \n");
            printf("放弃修改按任意数字键\n");
            int r;
            scanf("%d",&r);//scanf("%r\n",&r);  //修改3 
            if(r==4) {
                char Newname[20];
                printf("请输入你要修改的新名字:\n");
                scanf("%s",Newname);//修改4 去掉&
                strcpy(s[i].name,Newname);
                char Newmove[20];
                printf("请输入你要修改的新移动电话号码:\n");
                scanf("%s",Newmove); //修改5 去掉&
                strcpy(s[i].name,Newmove);
                char Newhome[20];
                printf("请输入你要修改的新移动电话号码:\n");
                scanf("%s",Newhome);//修改5 去掉&
                strcpy(s[i].name,Newhome);
                char Newoffice[20];
                printf("请输入你要修改的新办公室电话号码:\n");
                scanf("%d",Newoffice);//修改5 去掉&
                strcpy(s[i].office,Newoffice);
                char Newmailbox[20];
                printf("请输入你要修改的新邮箱:\n");
                scanf("%s",Newmailbox);//修改5 去掉&
                strcpy(s[i].mailbox,Newmailbox);
                char Newgroup[20];
                printf("分组有未知、同事、亲戚、朋友、家人、同学,或者您可以自编分组名,请输入您要修改的分组:\n");
                scanf("%s",&ewgroup); //修改5 去掉&
                strcpy(s[i].group,Newgroup);
                printf("修改成功!\n");
                printf("修改后的手机通讯录如下:\n");
                print();
            }
        }
        fclose(fp);
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 12月2日
  • 已采纳回答 12月2日
  • 创建了问题 12月2日

悬赏问题

  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘