目录
代码详解
项目特点
学习收获
代码测试
未来改进
总结
首页 后端开发 C++ 练习 C:构建一个简单的电话簿应用程序

练习 C:构建一个简单的电话簿应用程序

Apr 03, 2025 pm 08:15 PM
c语言 ai switch c语言编程 2025

练习 C:构建一个简单的电话簿应用程序

学习C语言编程的最佳途径之一就是动手实践。本文将带您逐步完成一个我最近完成的项目:一个简单的电话簿应用程序。此应用演示了C语言中的文件处理和基本数据管理,允许您添加、查看和删除联系人。


代码详解

以下是完整代码:

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

// 函数声明
void addcontact(char name[], char number[]);
void viewcontacts();
void deletecontact(char name[]);

int main() {
    int choice;
    char name[20];
    char number[20];

    printf("-- 欢迎使用您的电话簿! -- \n");

    do {
        // 显示菜单
        printf("\n您想执行什么操作?\n");
        printf("1. 创建新联系人\t 2. 查看电话簿\t 3. 删除联系人\t 4. 退出\n");
        scanf("%d", &choice);

        switch (choice) {
            case 1:
                // 添加新联系人
                printf("很好,让我们创建一个新联系人:\n");
                printf("请输入联系人的姓名:\n");
                scanf("%s", name);
                printf("现在输入电话号码:\n");
                scanf("%s", number);
                addcontact(name, number);
                break;
            case 2:
                // 查看电话簿
                printf("这是您的电话簿:\n");
                viewcontacts();
                break;
            case 3:
                // 删除联系人
                printf("请输入要删除的联系人的姓名:\n");
                scanf("%s", name);
                deletecontact(name);
                break;
        }
    } while (choice != 4); // 循环直到用户选择“退出”

    return 0;
}

// 向电话簿添加联系人的函数
void addcontact(char name[], char number[]) {
    FILE *pfile;
    pfile = fopen("phonebook.txt", "a");
    if (pfile == NULL) {
        printf("打开电话簿失败。");
        return;
    }
    fprintf(pfile, "姓名: %s \t 电话: %s\n", name, number);
    printf("联系人已创建!\n");
    fclose(pfile);
}

// 查看电话簿中所有联系人的函数
void viewcontacts() {
    char filecontent[200];
    FILE *pfile;
    pfile = fopen("phonebook.txt", "r");

    while (fgets(filecontent, sizeof(filecontent), pfile)) {
        printf("\n%s", filecontent);
    }

    fclose(pfile);    
}

// 从电话簿中删除联系人的函数
void deletecontact(char name[]) {
    FILE *pfile, *ptrash;
    char line[200], contactname[20], contactnumber[20];

    pfile = fopen("phonebook.txt", "r");
    ptrash = fopen("trash.txt", "w");

    if (pfile == NULL || ptrash == NULL) {
        printf("打开文件失败。");
        return;
    }

    while (fgets(line, sizeof(line), pfile)) {
        sscanf(line, "姓名: %s \t 电话: %s\n", contactname, contactnumber);
        if (strcmp(name, contactname) != 0) {
            fputs(line, ptrash);
        }
    }

    fclose(pfile);
    fclose(ptrash);

    // 将旧电话簿替换为更新后的版本
    remove("phonebook.txt");
    rename("trash.txt", "phonebook.txt");
    printf("联系人已删除。");
}
登录后复制

项目特点

该程序实现了三个核心功能:

  1. 添加联系人:
    • 允许用户输入姓名和电话号码。
    • 将联系人信息存储到名为 phonebook.txt 的文件中。
  2. 查看联系人:
    • 读取并显示 phonebook.txt 文件中存储的所有联系人信息。
  3. 删除联系人:
    • 根据用户输入的姓名删除联系人。
    • 通过创建临时文件过滤掉已删除的联系人,然后替换原始文件。

学习收获

通过这个练习,我巩固了以下C语言知识:

  1. 文件处理: 熟练运用 fopenfclose 等文件操作函数,并处理文件打开失败的情况。
  2. 字符串操作: 使用 strcmpsscanf 等函数进行字符串比较和解析。
  3. 基本数据管理: 学习如何在简单的文本文件中存储和管理数据,以及通过创建临时文件来更新文件内容。

代码测试

  1. 将代码复制到 .c 文件中(例如 phonebook.c),并使用C编译器(如 GCC)编译:
gcc -o phonebook phonebook.c
登录后复制
  1. 运行编译后的程序:
./phonebook
登录后复制
  1. 按照屏幕提示添加、查看或删除联系人。
  2. 打开 phonebook.txt 文件验证数据是否正确存储。

未来改进

这个程序是一个良好的开端,未来可以考虑以下改进:

  1. 输入验证: 验证电话号码的有效性(例如,只包含数字),防止重复姓名。
  2. 用户界面改进: 提供更清晰的提示信息,允许输入包含多个单词的姓名(使用 fgets 代替 scanf)。
  3. 增强文件处理: 考虑数据加密以提高安全性,使用更结构化的文件格式(如 CSV 或 JSON)。
  4. 高级功能: 添加搜索功能,按字母顺序排序联系人。

总结

这个练习帮助我深入理解了C语言的文件处理和基本数据管理。这是一个简单但实用的程序,可以作为更复杂项目的基础。如果您是C语言初学者,强烈推荐您尝试一下!这是一个有趣且有益的学习过程。

以上是练习 C:构建一个简单的电话簿应用程序的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Java教程
1662
14
CakePHP 教程
1418
52
Laravel 教程
1311
25
PHP教程
1261
29
C# 教程
1234
24
全球币圈十大交易所有哪些 排名前十的货币交易平台2025 全球币圈十大交易所有哪些 排名前十的货币交易平台2025 Apr 28, 2025 pm 08:12 PM

2025年全球十大加密货币交易所包括Binance、OKX、Gate.io、Coinbase、Kraken、Huobi、Bitfinex、KuCoin、Bittrex和Poloniex,均以高交易量和安全性着称。

芝麻开门官网入口 芝麻开门官方最新入口2025 芝麻开门官网入口 芝麻开门官方最新入口2025 Apr 28, 2025 pm 07:51 PM

芝麻开门是重点加密货币交易的平台,用户可以通过官方网站或社交媒体获取入口,确保访问时验证SSL证书和网站内容的真实性。

排名靠前的货币交易平台有哪些 最新虚拟币交易所排名榜前10 排名靠前的货币交易平台有哪些 最新虚拟币交易所排名榜前10 Apr 28, 2025 pm 08:06 PM

目前排名前十的虚拟币交易所:1.币安,2. OKX,3. Gate.io,4。币库,5。海妖,6。火币全球站,7.拜比特,8.库币,9.比特币,10。比特戳。

全球币圈十大交易所有哪些 排名前十的货币交易平台最新版 全球币圈十大交易所有哪些 排名前十的货币交易平台最新版 Apr 28, 2025 pm 08:09 PM

全球十大加密货币交易平台包括Binance、OKX、Gate.io、Coinbase、Kraken、Huobi Global、Bitfinex、Bittrex、KuCoin和Poloniex,均提供多种交易方式和强大的安全措施。

排名前十的虚拟币交易app有哪 最新数字货币交易所排行榜 排名前十的虚拟币交易app有哪 最新数字货币交易所排行榜 Apr 28, 2025 pm 08:03 PM

Binance、OKX、gate.io等十大数字货币交易所完善系统、高效多元化交易和严密安全措施严重推崇。

如何理解C  中的DMA操作? 如何理解C 中的DMA操作? Apr 28, 2025 pm 10:09 PM

DMA在C 中是指DirectMemoryAccess,直接内存访问技术,允许硬件设备直接与内存进行数据传输,不需要CPU干预。1)DMA操作高度依赖于硬件设备和驱动程序,实现方式因系统而异。2)直接访问内存可能带来安全风险,需确保代码的正确性和安全性。3)DMA可提高性能,但使用不当可能导致系统性能下降。通过实践和学习,可以掌握DMA的使用技巧,在高速数据传输和实时信号处理等场景中发挥其最大效能。

C  中的chrono库如何使用? C 中的chrono库如何使用? Apr 28, 2025 pm 10:18 PM

使用C 中的chrono库可以让你更加精确地控制时间和时间间隔,让我们来探讨一下这个库的魅力所在吧。C 的chrono库是标准库的一部分,它提供了一种现代化的方式来处理时间和时间间隔。对于那些曾经饱受time.h和ctime折磨的程序员来说,chrono无疑是一个福音。它不仅提高了代码的可读性和可维护性,还提供了更高的精度和灵活性。让我们从基础开始,chrono库主要包括以下几个关键组件:std::chrono::system_clock:表示系统时钟,用于获取当前时间。std::chron

MySQL批量插入数据的高效方法 MySQL批量插入数据的高效方法 Apr 29, 2025 pm 04:18 PM

MySQL批量插入数据的高效方法包括:1.使用INSERTINTO...VALUES语法,2.利用LOADDATAINFILE命令,3.使用事务处理,4.调整批量大小,5.禁用索引,6.使用INSERTIGNORE或INSERT...ONDUPLICATEKEYUPDATE,这些方法能显着提升数据库操作效率。

See all articles