函数输出无结果,直接结束运行

在写c语言通讯录的时候想先写一个添加功能试试看,根据网上的内容提示自己试了试,结果菜单都打不出来

无法打印,打印无结果

#include
#include
#define MAX_name 20
#define MAX_phone 20
#define MAX_sex 20
#define MAX_addr 20
#define MAX 1000
//函数声明
void menu();
void begin(contact* pc);
void c_add(contact* pc);
void test();

void menu()//打印菜单
{
    printf("########################");
    printf("####  1.增加联系人  ####");
    printf("####  2.删除联系人  ####");
    printf("####  3.查找联系人  ####");
    printf("####  4.打印联系人  ####");
    printf("####  5.修改联系人  ####");
    printf("####  6.退出通讯录  ####");
    printf("########################");
}
typedef struct//一个用来存贮成员信息的结构体peo
{
    char name[MAX_name];
    char sex[MAX_sex];
    char phone[MAX_phone];
    char addr[MAX_addr];
}peo;
typedef struct
{
    peo* man;//结构体指针
    int size;//人数
}contact;
enum {add=1,cut,find,print,change,secede};//枚举数字

void begin(contact*pc)//初始化通讯录
{
    memset(pc->man, 0, sizeof(pc->man));
    pc->size = 0;
}
void c_add(contact* pc)//添加功能
{
    if (pc->size == MAX)
    {
        printf("通讯录已满");
    }
    else
    {
        printf("请输入名字:  ");
        scanf("%s\n",pc->man[pc->size].name);
        printf("请输入性别:  ");
        scanf("%s\n",pc->man[pc->size].sex);
        printf("请输入电话:  ");
        scanf("%s\n",pc->man[pc->size].phone);
        printf("请输入地址:  ");
        scanf("%s\n",pc->man[pc->size].addr);
        pc->size++;
            printf("添加成功");
    }
}
void test()
{
    contact con;
    begin(&con);
    int dis = 0;
    menu();
    do
    {
        printf("请输入选择: ");
        scanf("%d", dis);
        switch (dis)
        {
        case add:c_add(&con); break;
        default:printf("失败");
        }
        while (secede);
    }
}
int main()//主函数///////////////////////////////////////////////
{
    test();
    return 0;
}

结果如图

img

在发现连菜单都打印不出来以后,我想着把菜单单独变成一个函数然后再带入test里面去,结果果然一样

你的while怎么能写进do里面去,这语法都是错的,根本编译不了
编译不通过,编译器会提示你有错误,是否继续运行,你要点否,把错误都调试正确了再运行,不要点是,那是直接运行之前编译好的exe,那当然没有你后来写的任何功能