weixin_50947427 2021-07-06 18:40 采纳率: 66.7%
浏览 34

C程序异常退出。。。。。。

用C语言写了个简单的通讯录管理系统。。。。。。可老是会这样退出。。。。
错误:
Process exited after 13.64 seconds with return value 3221225477
源代码:
https://github.com/mhqlyh/1

  • 写回答

1条回答 默认 最新

  • qzjhjxj 2021-07-06 22:55
    关注

    修改如下,供参考:

    #include <stdio.h>
    #include "function.h"
    #include <string.h>
    #include <math.h>
    #include <stdlib.h>
    #define MAX_NUM 500
    #define MAX_LEN 10
    
    //function.h
    //#define MAX_NUM 500
    //#define MAX_LEN 10
    struct person {
        int  number;    /*用户号码,姓名,地址,性别,关系*/
        char name[MAX_LEN];
        char address[64];
        int  sex;
        char relationship[64];
    };
    
    struct addressbooks {
        struct person personarray[MAX_NUM];
        int nowsize; /*当前联系人的个数*/
    };
    
    int  cleanperson(struct addressbooks *p);
    void modifyperson(struct addressbooks *p);
    void deleteperson(struct addressbooks *p);
    void showperson(struct addressbooks *p);
    void addperson(struct addressbooks *p);
    void searchperson(struct addressbooks *p);
    int  Isexit(struct addressbooks *p, char *name_i);
    void mainfunction();
    
    
    //main.c
    //#include <stdio.h>
    //#include "function.h"
    //#include <string.h>
    //#include <math.h>
    //#include <stdlib.h>
    //#define MAX_NUM 500
    //#define MAX_LEN 10
    
    int main() {
        struct addressbooks book1;
        book1.nowsize=0;      /*初始化*/
        int select = 0;
        while (1) {
            mainfunction();
            printf("请输入你的选择:\n");
            scanf("%d", &select);
            switch (select) {
                case 1:
                    searchperson(&book1);
                    break;
                case 2:
                    showperson(&book1);
                    break;
                case 3:
                    addperson(&book1);
                    break;
                case 4:
                    deleteperson(&book1);
                    break;
                case 5:
                    modifyperson(&book1);
                    break;
                case 6:
                    cleanperson(&book1);
                    break;
                case 0:
                    printf("欢迎下次使用!\n");
                    system("pause");
                   exit(0);
                    break;
                default:
                    break;
    
            }
        }
        return 0;
    }
    
    
    //function.c
    //#include"function.h"
    
    void mainfunction() {
        printf("*******************\n");
        printf("***1、查找联系人***\n");
        printf("***2、显示联系人***\n");
        printf("***3、添加联系人***\n");
        printf("***4、删除联系人***\n");
        printf("***5、修改联系人***\n");
        printf("***6、清空联系人***\n");
        printf("***0、退出通讯录***\n");
        printf("*******************\n");
    }
    
    int Isexit(struct addressbooks *p, char *name_i) {    /*判断联系人是否存在*/
        int i, t = -1;
        for ( i = 0; i < p->nowsize; i++) {
            if (strcmp(p->personarray[i].name,name_i)==0){
                t = i;                  /*把联系人的下标储存,返回*/
                break;
            }
        }
        return t;
    }
    
    void searchperson(struct addressbooks *p) { /*查找功能*/
        char name_search[MAX_LEN];
        printf("请输入要查询联系人的姓名:\n");
        scanf("%s", name_search);
        int t = Isexit(p, name_search);
        if (t >= 0) {
            printf("姓名:%s\t", p->personarray[t].name);
            printf("号码:%lld\t", p->personarray[t].number);
            printf("性别:%s\t", (p->personarray[t].sex == 1 ? "男" : "女"));
            printf("地址:%s\t", p->personarray[t].address);
            printf("关系:%s\n", p->personarray[t].relationship);
        } else {
            printf("未查找到!\n");
        }
    }
    
    void addperson(struct addressbooks *p) {      /*添加功能*/
        if (p->nowsize == MAX_NUM) {
            printf("通讯录人数已满,无法添加!");
        } else {
            char name_scan[MAX_LEN];
            printf("请输入新添联系人的姓名:\n");
            scanf("%s",name_scan);
            strcpy(p->personarray[p->nowsize].name,name_scan);
    
            int number_scan;
            printf("请输入新添联系人的号码:\n");
            scanf("%d", &number_scan);
            p->personarray[p->nowsize].number = number_scan;
    
            int sex_scan;
            printf("请输入新添联系人的性别,0——女,1——男:\n");
            while (1) {
                scanf("%d", &sex_scan);
                if (sex_scan == 0 || sex_scan == 1) {
                    p->personarray[p->nowsize].sex = sex_scan;
                    break;
                } else {
                    printf("输入错误,请重新输入!");
                }
            }
    
            char address_scan[64];
            printf("请输入新添联系人的地址:\n");
            scanf("%s", address_scan);
            strcpy(p->personarray[p->nowsize].address,address_scan);
    
            char relationship_scan[64];
            printf("请输入新添联系人的关系:\n");
            scanf("%s", relationship_scan);
            strcpy(p->personarray[p->nowsize].relationship,relationship_scan);
    
            p->nowsize++;                /*通讯录当前人数+1*/
            printf("添加成功!\n");
        }
    }
    
    void showperson(struct addressbooks *p) {                                            /*显示功能*/
        if (p->nowsize == 0) {
            printf("当前通讯录为空!\n");
        } else {
            for (int i = 0; i < p->nowsize; i++) {
                printf("姓名:%s\t", p->personarray[i].name);
                printf("号码:%d\t", p->personarray[i].number);
                printf("性别:%s\t", (p->personarray[i].sex == 1 ? "男" : "女"));
                printf("地址:%s\t", p->personarray[i].address);
                printf("关系:%s\n", p->personarray[i].relationship);
            }
                    printf("\n");
        }
    }
    
    void deleteperson(struct addressbooks *p) {                                /*删除功能*/
        printf("请输入要删除的联系人:\n");
        char name_scan[MAX_LEN];
        scanf("%s", name_scan);
        int t = Isexit(p, name_scan);
        if (t >= 0) {
            for (int i = t; i < p->nowsize-1; i++) {
                p->personarray[i] = p->personarray[i + 1];
            }
            p->nowsize--;
            printf("删除成功!\n");
        } else {
            printf("未找到联系人!\n");
        }
    }
    
    void modifyperson(struct addressbooks *p) {     /*修改功能*/
        printf("请输入你要修改的联系人的姓名:\n");
        char name_scan[MAX_LEN];
        scanf("%s", name_scan);
        int t = Isexit(p, name_scan);
        if (t >= 0) {
            printf("请输入修改后的姓名:\n");
            scanf("%s", name_scan);
            strcpy(p->personarray[t].name, name_scan);
            printf("请输入号码:\n");
            int number_scan;
            scanf("%d", &number_scan);
            p->personarray[t].number = number_scan;
            printf("请输入性别,0——女,1——男:\n");
            int sex_scan;
            while (1) {
                scanf("%d", &sex_scan);
                if (sex_scan == 1 || sex_scan == 0) {
                    p->personarray[t].sex = sex_scan;
                    break;
                } else {
                    printf("输入错误,请重新输入!");
                }
            }
            printf("请输入地址:\n");
            char address_scan[64];
            scanf("%s", &address_scan);
            strcpy(p->personarray[t].address, address_scan);
            printf("请输入关系:\n");
            char relationship_scan[64];
            scanf("%s", relationship_scan);
            strcpy(p->personarray[t].relationship,relationship_scan);
            printf("修改成功!\n");
        } else {
            printf("没有该联系人!\n");
        }
    }
    
    int cleanperson(struct addressbooks *p) {
        printf("清空后不可恢复,是否继续? 0——否,1——是");
        int select = 0;
        while (1) {
            scanf("%d", &select);
            if (select) {
                p->nowsize = 0;
                printf("通讯录已清空!\n");
                break;
            } else {
                printf("暂时不清理\n");
                break;
            }
        }
        return 0;
    }
    
    评论

报告相同问题?

悬赏问题

  • ¥15 单纯型python实现编译报错
  • ¥15 c++2013读写oracle
  • ¥15 c++ gmssl sm2验签demo
  • ¥15 关于模的完全剩余系(关键词-数学方法)
  • ¥15 有没有人懂这个博图程序怎么写,还要跟SFB连接,真的不会,求帮助
  • ¥15 PVE8.2.7无法成功使用a5000的vGPU,什么原因
  • ¥15 is not in the mmseg::model registry。报错,模型注册表找不到自定义模块。
  • ¥15 安装quartus II18.1时弹出此error,怎么解决?
  • ¥15 keil官网下载psn序列号在哪
  • ¥15 想用adb命令做一个通话软件,播放录音