C语言实现静态存储通讯录的示例代码

下面是详细的“C语言实现静态存储通讯录的示例代码”的攻略:

一、准备工作

1. 安装开发环境

首先需要安装C语言开发环境,推荐使用Code::Blocks,可以在官网https://www.codeblocks.org/上进行下载和安装。

2. 创建项目

在Code::Blocks中,选择File->New->Project,选择“Console application”,按照提示设置项目名称和路径等信息,创建一个新的C语言项目。

3. 编写代码

根据通讯录的需求,编写相应的代码,包括定义结构体、添加联系人、删除联系人、显示所有联系人等操作。具体代码如下:

#include <stdio.h>
#include <string.h>

#define MAX_CONTACTS 100    // 最大联系人数
#define MAX_NAME_LEN 20     // 姓名的最大长度
#define MAX_PHONE_LEN 20    // 电话号码的最大长度

// 定义联系人结构体
struct Contact {
    char name[MAX_NAME_LEN];
    char phone[MAX_PHONE_LEN];
};

// 定义通讯录结构体
struct AddressBook {
    struct Contact contacts[MAX_CONTACTS];
    int count;    // 当前联系人数
};

// 向通讯录添加联系人
void addContact(struct AddressBook *addressBook) {
    if (addressBook->count >= MAX_CONTACTS) {
        printf("通讯录已满!\n");
        return;
    }

    printf("请输入联系人姓名:\n");
    scanf("%s", addressBook->contacts[addressBook->count].name);    // 输入姓名
    printf("请输入联系人电话:\n");
    scanf("%s", addressBook->contacts[addressBook->count].phone);   // 输入电话

    addressBook->count++;    // 当前联系人数加一
    printf("添加联系人成功!\n");
}

// 从通讯录删除联系人
void deleteContact(struct AddressBook *addressBook, char *name) {
    int index = -1;

    // 查找姓名对应的联系人
    for (int i = 0; i < addressBook->count; i++) {
        if (strcmp(name, addressBook->contacts[i].name) == 0) {
            index = i;
            break;
        }
    }

    if (index == -1) {
        printf("联系人不存在!\n");
        return;
    }

    // 移动后面的联系人,覆盖被删除的联系人
    for (int i = index + 1; i < addressBook->count; i++) {
        addressBook->contacts[i - 1] = addressBook->contacts[i];
    }

    addressBook->count--;    // 当前联系人数减一
    printf("删除联系人成功!\n");
}

// 显示所有联系人
void showContacts(struct AddressBook *addressBook) {
    if (addressBook->count == 0) {
        printf("通讯录为空!\n");
        return;
    }

    printf("共有%d个联系人:\n", addressBook->count);
    for (int i = 0; i < addressBook->count; i++) {
        printf("%d.姓名:%s,电话:%s\n", i + 1, addressBook->contacts[i].name, addressBook->contacts[i].phone);
    }
}

int main() {
    struct AddressBook addressBook = {{}, 0};    // 初始化为空通讯录
    int choice;

    // 提示用户输入命令
    while (1) {
        printf("\n请输入指令:\n");
        printf("1.添加联系人\n");
        printf("2.删除联系人\n");
        printf("3.显示所有联系人\n");
        printf("0.退出\n");
        scanf("%d", &choice);

        switch (choice) {
            case 1:
                addContact(&addressBook);
                break;
            case 2: {
                char name[MAX_NAME_LEN];
                printf("请输入要删除的联系人姓名:\n");
                scanf("%s", name);
                deleteContact(&addressBook, name);
                break;
            }
            case 3:
                showContacts(&addressBook);
                break;
            case 0:
                return 0;
            default:
                printf("无效的指令!\n");
        }
    }
}

二、示例说明

1. 添加联系人

当用户选择1,即“添加联系人”时,程序会提示用户输入联系人姓名和电话,依次将输入的姓名和电话保存到下一个空闲的联系人位置,同时更新联系人数。如果通讯录已满,则提示“通讯录已满!”。代码如下:

void addContact(struct AddressBook *addressBook) {
    if (addressBook->count >= MAX_CONTACTS) {
        printf("通讯录已满!\n");
        return;
    }

    printf("请输入联系人姓名:\n");
    scanf("%s", addressBook->contacts[addressBook->count].name);    // 输入姓名
    printf("请输入联系人电话:\n");
    scanf("%s", addressBook->contacts[addressBook->count].phone);   // 输入电话

    addressBook->count++;    // 当前联系人数加一
    printf("添加联系人成功!\n");
}

2. 删除联系人

当用户选择2,即“删除联系人”时,程序会提示用户输入待删除联系人的姓名。如果找到了该联系人,则将该联系人的信息从通讯录中删除,并将后面的联系人依次向前移动。如果未找到该联系人,则提示“联系人不存在!”。代码如下:

void deleteContact(struct AddressBook *addressBook, char *name) {
    int index = -1;

    // 查找姓名对应的联系人
    for (int i = 0; i < addressBook->count; i++) {
        if (strcmp(name, addressBook->contacts[i].name) == 0) {
            index = i;
            break;
        }
    }

    if (index == -1) {
        printf("联系人不存在!\n");
        return;
    }

    // 移动后面的联系人,覆盖被删除的联系人
    for (int i = index + 1; i < addressBook->count; i++) {
        addressBook->contacts[i - 1] = addressBook->contacts[i];
    }

    addressBook->count--;    // 当前联系人数减一
    printf("删除联系人成功!\n");
}

以上就是“C语言实现静态存储通讯录的示例代码”的完整攻略,希望对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C语言实现静态存储通讯录的示例代码 - Python技术站

(0)
上一篇 2023年5月24日
下一篇 2023年5月24日

相关文章

  • C++使用ADO实现存取图片的方法

    下面我将详细讲解“C++使用ADO实现存取图片的方法”。 步骤1:准备工作 在开始实现存取图片的过程之前,我们需要先进行一些准备工作。 安装并配置 MFC 库和 ADO 库 配置 OLE DB 提供程序 安装数据库 具体的教程可以参考相关资料,这里不再过多赘述。 步骤2:创建数据库表 我们需要创建一个包含图片信息的数据库表,首先可以创建一个名为 Pictur…

    C 2023年5月22日
    00
  • Oracle 19c RAC 手工建库的搭建过程

    下面就为您讲解“Oracle 19c RAC 手工建库的搭建过程”的完整攻略。 一、前置条件 在开始搭建 Oracle 19c RAC 环境之前,需要满足以下的前置条件: 服务器环境:必须具备至少两台运行 Oracle Linux 7.2 的服务器,它们必须在同一个局域网中,并且它们需要满足 Oracle 的硬件和软件要求。 网络环境:必须正确配置每个节点的…

    C 2023年5月22日
    00
  • C语言基于EasyX实现贪吃蛇

    C语言基于EasyX实现贪吃蛇攻略 1. 前置要求 需要具备一定的 C 语言编程和 EasyX 开发的基本知识,以及掌握贪吃蛇的游戏规则和基本操作。 2. 环境搭建 需要安装Visual Studio 2010及以上版本、EasyX图形库和EasyX官方Visual Studio插件。其中EasyX图形库可以从官方网站下载:https://www.easyx…

    C 2023年5月23日
    00
  • 浅谈JSON.parse()和JSON.stringify()

    浅谈JSON.parse()和JSON.stringify() JSON.parse()和JSON.stringify()是JavaScript中常用的JSON数据解析和生成方法,它们可以让我们轻松地将JavaScript的对象或数组转换为JSON格式,或者将JSON格式的数据转换为JavaScript的对象或数组。本文将从以下几个方面进行详细讲解: JSO…

    C 2023年5月23日
    00
  • 提高C++程序运行效率的10个简单方法

    提高C++程序运行效率的10个简单方法 在C++编程过程中,要保证程序的高效性和稳定性,下面提供了10个简单易行的方法来提高C++程序的运行效率。 1.使用合适的编译器 选择合适的编译器可以提高C++程序的运行速度。例如,使用gcc编译C++程序比使用Visual C++编译器的速度更快。 2.减少内存分配次数 频繁分配内存会降低程序的效率。使用内存池技术、…

    C 2023年5月22日
    00
  • 0到1分析美团端侧cdn容灾解决方案

    0到1分析美团端侧CDN容灾解决方案攻略 背景介绍 在互联网行业,容灾解决方案非常重要。当系统出现故障时,为了保证用户体验,需要用容灾方案来解决和恢复服务。CDN是一种常见的解决方案,可以加速资源访问并分担服务压力。本文将详细介绍美团端侧CDN的容灾解决方案。 容灾解决方案 美团端侧CDN容灾解决方案主要分为以下几个部分: 1. 备用域名解析 美团会为CDN…

    C 2023年5月23日
    00
  • C++实现从数组中同时取出最大最小元素算法示例

    C++实现从数组中同时取出最大最小元素算法示例 算法思路 从数组中取最大最小值的算法是比较基础的一种算法,其实现思路也较为简单。本算法的实现思路如下: 定义一个变量来存储最大值,首先将其赋值为数组的第一个元素。 定义一个变量来存储最小值,首先将其赋值为数组的第一个元素。 遍历数组中的每一个元素,当找到一个比当前最大值还大的元素时,将最大值变量的值更新为该元素…

    C 2023年5月23日
    00
  • CMD命令行高级教程精选合编合集

    CMD命令行高级教程精选合编合集 CMD命令行是Windows操作系统中的一个强大工具,可用于管理系统、操作文件、安装软件等功能。下面将为大家提供CMD命令行高级教程精选合编合集,帮助大家学习掌握CMD命令行的高级技巧和用法。 一、CMD命令行常用技巧 1. 磁盘和文件夹操作 使用cd命令进入指定目录,如进入D盘test文件夹: cd D:\test 使用d…

    C 2023年5月22日
    00
合作推广
合作推广
分享本页
返回顶部