用VS输出这份代码会在scanf_s的位置(就是输入名字那个位置)卡住?而且用scanf_s一直警告?
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define MAX 1000
#define MAX_NAME 20
#define MAX_SEX 20
#define MAX_PHONE 20
#define MAX_ADDRESS 20
void showmenu() {
printf("\t1、添加联系人\n");
printf("\t2、显示联系人\n");
printf("\t3、查找联系人\n");
printf("\t4、修改联系人\n");
printf("\t5、删除联系人\n");
printf("\t6、清空联系人\n");
printf("\t0、退出通讯录\n");
}
typedef struct people {
char name[MAX_NAME];
int age;
char iphone[MAX_PHONE];
char sex[MAX_SEX];
char ip[MAX_ADDRESS];
};
struct personBook {
struct people arr[MAX];
int size;
};
void input(struct personBook* p1) {
memset(p1->arr, 0, sizeof(p1->arr));
p1->size = 0;
}
void getperson(struct personBook* per) {
if (per->size == MAX) {
printf("通讯录已满!!!无法添加!!!");
return;
}
else {
printf("请输入联系人姓名:");
scanf_s("%s", per->arr[per->size].name);
printf("请输入联系人年龄:");
scanf_s("%d", &per->arr[per->size].age);
printf("请输入联系人电话:");
scanf_s("%s", per->arr[per->size].iphone);
printf("请输入联系人性别: 1----男 2----女 ");
int m = 0;
qu:
scanf_s("%d", &m);
if (m == 1) {
*per->arr[per->size].sex = '男';
}
else if (m == 2) {
*per->arr[per->size].sex = '女';
}
else {
printf("输入错误!!!请重新输入!!!");
goto qu;
}
printf("请输入联系人地址:");
scanf_s("%s", per->arr[per->size].ip);
printf("添加成功了!!!!");
per->size++;
}
}
int main() {
int a = 0;
struct personBook p1;
input(&p1);
while (1) {
showmenu();
scanf_s("%d", &a);
switch (a) {
case 1:
getperson(&p1);
case 2:
case 3:
case 4:
case 5:
case 6:
case 0:
printf("欢迎下次使用!!!");
return 0;
}
}
return 0;
}