YuMu2012 2022-09-17 14:58 采纳率: 70%
浏览 40
已结题

用VS输出这份代码会在scanf_s的位置(就是输入名字那个位置)卡住?而且用scanf_s一直警告?

用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;
}

img

  • 写回答

3条回答 默认 最新

  • 快乐鹦鹉 2022-09-17 15:08
    关注

    name后面再加个参数MAX_NAME

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 9月25日
  • 已采纳回答 9月17日
  • 创建了问题 9月17日

悬赏问题

  • ¥20 java在应用程序里获取不到扬声器设备
  • ¥15 echarts动画效果的问题,请帮我添加一个动画。不要机器人回答。
  • ¥60 许可证msc licensing软件报错显示已有相同版本软件,但是下一步显示无法读取日志目录。
  • ¥15 Attention is all you need 的代码运行
  • ¥15 一个服务器已经有一个系统了如果用usb再装一个系统,原来的系统会被覆盖掉吗
  • ¥15 使用esm_msa1_t12_100M_UR50S蛋白质语言模型进行零样本预测时,终端显示出了sequence handled的进度条,但是并不出结果就自动终止回到命令提示行了是怎么回事:
  • ¥15 前置放大电路与功率放大电路相连放大倍数出现问题
  • ¥30 关于<main>标签页面跳转的问题
  • ¥80 部署运行web自动化项目
  • ¥15 腾讯云如何建立同一个项目中物模型之间的联系