main.c文件

#define _CRT_SECURE_NO_WARNINGS 1#include "contact.h"void test(SUM* pc){    /*char arr[] = "222";    change(pc,arr);    print(pc);*/    int i = 0;    char arr[name_MAX];    printf("请输出指令:");    while (1)    {        scanf("%d", &i);        switch (i)        {        case ADD_1:            ADD(pc);            printf("请再次输出指令:");            break;        case delet_2:            printf("请输出要删除的联系人姓名:");            scanf("%s", arr);            delet(pc, arr);            printf("请再次输出指令:");            break;        case change_3:            printf("请输出要批改的联系人姓名:");            scanf("%s", arr);            change(pc, arr);            printf("请再次输出指令:");            break;        case search_4:            printf("请输出要搜寻的联系人姓名:");            scanf("%s", arr);            print_one(pc, search(pc, arr));            printf("请再次输出指令:");            break;        case print_5:            print(pc);            printf("请再次输出指令:");            break;        case print_one_6:            printf("请输出要显示的联系人姓名:");            scanf("%s", arr);            print_one(pc, search(pc, arr));            printf("请再次输出指令:");            break;        default:            printf("输出有误!请从新输出:");            break;        }    }        return;}int main(){    //构造体初始化    SUM Data = {        .people = {{"111","444","777"},{"222","555","888"},{"333","666","999"}},        .size = 3    };    test(&Data);    return 0;}

contact.c文件

#define _CRT_SECURE_NO_WARNINGS 1#include "contact.h"//减少联系人void ADD(SUM* const pc){        printf("请输出姓名:");    scanf("%s", &(pc->people[pc->size].name));    printf("请输出单位:");    scanf("%s", &(pc->people[pc->size].danwei));    printf("请输出号码:");    scanf("%s", &(pc->people[pc->size].tele));    (pc->size)++;    return;}//搜寻联系人,依据姓名查找,返回对应的下标int search(SUM* const pc, const char * arr){    for (int i = 0;i<pc->size;i++)    {        if (strcmp(((pc->people)[i].name), arr) == 0)        {            return i;   //找到了,返回对应下标        }    }    return -1;  //-1示意没找到}//删除联系人void delet(SUM* const pc, const char *arr){    int a = search(pc,arr);    for (a;a<(pc->size-1);a++)    {        pc->people[a] = pc->people[a + 1];    }    (pc->size)--;    return;}//打印联系人void print(SUM* const pc){    for (int i = 0; i < pc->size; i++)    {        printf("%s    ", (pc->people)[i].name);        printf("%s    ", (pc->people)[i].danwei);        printf("%s    ", (pc->people)[i].tele);        printf("\n");    }    return;}//打印某一个联系人void print_one(SUM* const pc, const int i){        printf("%s    ", (pc->people)[i].name);    printf("%s    ", (pc->people)[i].danwei);    printf("%s    ", (pc->people)[i].tele);    printf("\n");    return;}//改void change(SUM* const pc, const char* arr){    int a = search(pc, arr);    printf("请输出姓名:");    scanf("%s",pc->people[a].name);    printf("请输出单位:");    scanf("%s", pc->people[a].danwei);    printf("请输出号码:");    scanf("%s", pc->people[a].tele);    return;}

contact.h文件

#pragma once#include <stdio.h>#include <string.h>#define name_MAX 20#define danwei_MAX 20#define tele_MAX 12#define people_MAX 100#define ADD_1 1#define delet_2 2#define change_3 3#define search_4 4#define print_5 5#define print_one_6 6typedef struct Contact{    char name[name_MAX];    char danwei[danwei_MAX];    char tele[tele_MAX];}Contact;typedef struct SUM{    Contact people[people_MAX];    int size;}SUM;void ADD(SUM* const pc);void delet(SUM* const pc, const char* arr);void change(SUM* const pc, const char* arr);int search(SUM* const pc, const char* arr);void print(SUM* const pc);void print_one(SUM* const pc, const int i);