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日

悬赏问题

  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计