根据这段代码#include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX_NAME_LEN 20 #define MAX_ADDRESS_LEN 50 #define MAX_SEX_LEN 5 #define MAX_PHONE_LEN 11 #define MAX_STUDENT_NUM 1000 // 定义学生结构体 typedef struct { char name[MAX_NAME_LEN]; char address[MAX_ADDRESS_LEN]; char SEX[MAX_SEX_LEN]; char phone[MAX_PHONE_LEN]; } Student; // 定义通讯录结构体 typedef struct { Student students[MAX_STUDENT_NUM]; int num_students; } AddressBook;修改void modifyStudentInfo(AddressBook *book) { assert(book); char name[NAME_MAX]; printf("请输入需要修改信息用户的名字:>\n"); scanf("%s", name); int pos = FindByName(pc, name);//pos为要寻找的人的下标 if (pos == -1) { printf("查无此人\n"); } else { int num = 0; do { printf("请输入你想修改此用户的信息\n"); printf(" 0.退出 1.姓名 2.性别 3.年龄 4.电话 5.地址:>\n"); scanf("%d", &num); switch (num) { case NAME: printf("请输入你想修改的姓名:>\n"); scanf("%s", pc->data[pos].name); break; case SEX: printf("请输入你想修改的性别:>\n"); scanf("%s", pc->data[pos].sex); break; case AGE: printf("请输入你想修改的年龄:>\n"); scanf("%d", &(pc->data[pos].age)); break; case TELE: printf("请输入你想修改的电话:>\n"); scanf("%s", pc->data[pos].tele); break; case ADDR: printf("请输入你想修改的地址:>\n"); scanf("%s", pc->data[pos].addr); break; case 0: printf("不修改退回界面\n"); break; default:printf("无效操作数!\n"); } } while (num); } }这段代码
时间: 2024-01-15 22:04:31 浏览: 62
这段代码中有几个问题:
1. `name`数组的大小没有定义,应该改为`char name[MAX_NAME_LEN]`。
2. `FindByName`函数的参数应该是`book`而不是`pc`,因为`book`是传递给`modifyStudentInfo`函数的指针。
3. `sex`、`age`、`tele`和`addr`这些变量都没有定义,应该改为`SEX`、`AGE`、`TELE`和`ADDR`,并且在前面应该定义它们的最大长度。
4. 在`switch`语句中,`case`后的常量应该改为`NAME`、`SEX`、`AGE`、`TELE`和`ADDR`,因为这些是宏定义的常量。
5. 在`scanf`函数中,应该使用`%s`来读取字符串类型的变量,而不是使用`%d`。
6. 在修改`sex`、`age`、`tele`和`addr`时,应该使用结构体中定义的变量名,而不是使用错误的变量名。
修改后的代码如下所示:
```
void modifyStudentInfo(AddressBook *book) {
assert(book);
char name[MAX_NAME_LEN];
printf("请输入需要修改信息用户的名字:>\n");
scanf("%s", name);
int pos = FindByName(book, name);
if (pos == -1) {
printf("查无此人\n");
} else {
int num = 0;
do {
printf("请输入你想修改此用户的信息\n");
printf(" 0.退出 1.姓名 2.性别 3.年龄 4.电话 5.地址:>\n");
scanf("%d", &num);
switch (num) {
case NAME:
printf("请输入你想修改的姓名:>\n");
scanf("%s", book->students[pos].name);
break;
case SEX:
printf("请输入你想修改的性别:>\n");
scanf("%s", book->students[pos].SEX);
break;
case AGE:
printf("请输入你想修改的年龄:>\n");
scanf("%d", &(book->students[pos].AGE));
break;
case TELE:
printf("请输入你想修改的电话:>\n");
scanf("%s", book->students[pos].phone);
break;
case ADDR:
printf("请输入你想修改的地址:>\n");
scanf("%s", book->students[pos].address);
break;
case 0:
printf("不修改退回界面\n");
break;
default:
printf("无效操作数!\n");
}
} while (num);
}
}
```
阅读全文