老观众 2022-12-19 12:14 采纳率: 50%
浏览 21
已结题

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

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

无法打印,打印无结果

#include<stdio.h>
#include<string.h>
#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里面去,结果果然一样

  • 写回答

2条回答 默认 最新

  • 於黾 2022-12-19 12:17
    关注

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

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

报告相同问题?

问题事件

  • 系统已结题 12月27日
  • 已采纳回答 12月19日
  • 创建了问题 12月19日

悬赏问题

  • ¥100 iOS开发关于快捷指令截屏后如何将截屏(或从截屏中提取出的文本)回传给本应用并打开指定页面
  • ¥15 unity连接Sqlserver
  • ¥15 图中这种约束条件lingo该怎么表示出来
  • ¥15 VSCode里的Prettier如何实现等式赋值后的对齐效果?
  • ¥15 流式socket文件传输答疑
  • ¥20 keepalive配置业务服务双机单活的方法。业务服务一定是要双机单活的方式
  • ¥50 关于多次提交POST数据后,无法获取到POST数据参数的问题
  • ¥15 win10,这种情况怎么办
  • ¥15 如何在配置使用Prettier的VSCode中通过Better Align插件来对齐等式?(相关搜索:格式化)
  • ¥100 在连接内网VPN时,如何同时保持互联网连接