搜索
首页后端开发C++练习 C:构建一个简单的电话簿应用程序
练习 C:构建一个简单的电话簿应用程序Apr 03, 2025 pm 08:15 PM
c语言aiswitchc语言编程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
(超详细)VScode中配置C语言环境的方法(超详细)VScode中配置C语言环境的方法Dec 05, 2022 pm 07:05 PM

VScode中怎么配置C语言环境?下面本篇文章给大家介绍一下VScode配置C语言环境的方法(超详细),希望对大家有所帮助!

c语言中node是什么意思c语言中node是什么意思Jul 06, 2022 pm 03:51 PM

在C语言中,node是用于定义链表结点的名称,通常在数据结构中用作结点的类型名,语法为“struct Node{...};”;结构和类在定义出名称以后,直接用该名称就可以定义对象,C语言中还存在“Node * a”和“Node* &a”。

c语言怎么将数字转换成字符串c语言怎么将数字转换成字符串Jan 04, 2023 pm 03:20 PM

c语言将数字转换成字符串的方法:1、ascii码操作,在原数字的基础上加“0x30”,语法“数字+0x30”,会存储数字对应的字符ascii码;2、使用itoa(),可以把整型数转换成字符串,语法“itoa(number1,string,数字);”;3、使用sprintf(),可以能够根据指定的需求,格式化内容,存储至指针指向的字符串。

c语言开根号运算符是什么c语言开根号运算符是什么Mar 06, 2023 pm 02:39 PM

在c语言中,没有开根号运算符,开根号使用的是内置函数“sqrt()”,使用语法“sqrt(数值x)”;例如“sqrt(4)”,就是对4进行平方根运算,结果为2。sqrt()是c语言内置的开根号运算函数,其运算结果是函数变量的算术平方根;该函数既不能运算负数值,也不能输出虚数结果。

c语言数组如何初始化c语言数组如何初始化Jan 04, 2023 pm 03:36 PM

C语言数组初始化的三种方式:1、在定义时直接赋值,语法“数据类型 arrayName[index] = {值};”;2、利用for循环初始化,语法“for (int i=0;i<3;i++) {arr[i] = i;}”;3、使用memset()函数初始化,语法“memset(arr, 0, sizeof(int) * 3)”。

c语言合法标识符的要求是什么c语言合法标识符的要求是什么Aug 27, 2020 pm 01:47 PM

c语言合法标识符的要求是:1、标识符只能由字母(A~Z, a~z)、数字(0~9)和下划线(_)组成;2、第一个字符必须是字母或下划线,不能是数字;3、标识符中的大小写字母是有区别的,代表不同含义;4、标识符不能是关键字。

c语言中源文件编译后生成什么文件c语言中源文件编译后生成什么文件Nov 23, 2022 pm 07:44 PM

c语言编译后生成“.OBJ”的二进制文件(目标文件)。在C语言中,源程序(.c文件)经过编译程序编译之后,会生成一个后缀为“.OBJ”的二进制文件(称为目标文件);最后还要由称为“连接程序”(Link)的软件,把此“.OBJ”文件与c语言提供的各种库函数连接在一起,生成一个后缀“.EXE”的可执行文件。

c语言可以处理的文件类型是什么c语言可以处理的文件类型是什么Sep 19, 2022 pm 03:53 PM

c语言可以处理的文件类型是:文本文件和二进制文件。C语言所能够处理文件是按照存放形式分为文本文件和二进制文件:1、文本文件存储的是一个ASCII码,文件的内容可以直接进行输入输出;2、二进制文件直接将字符存储,不能将二进制文件的内容直接输出到屏幕上。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

EditPlus 中文破解版

EditPlus 中文破解版

体积小,语法高亮,不支持代码提示功能

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

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

VSCode Windows 64位 下载

VSCode Windows 64位 下载

微软推出的免费、功能强大的一款IDE编辑器

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

Dreamweaver Mac版

Dreamweaver Mac版

视觉化网页开发工具