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

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

```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

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

(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);
}

scanf("%s",&Newname);
改成
scanf("%s",Newname); 看看吧

fp=fopen("D:\通讯录.txt","r");
改为
fp=fopen("D:\通讯录.txt","r");