【声明:版权所有,欢迎转载,请勿用于商业用途。  联系信箱:feixiaoxing @163.com】

不管编写什么软件,我们都会涉及到模块的编写。说是模块,其实就是管理一片资源,这些资源的概念很广,可以是内存、锁、socket、字符串、文件、空间大小等等。所以不管是什么模块,你需要注意下面几个方面,当然这也是给外界提供的基本接口函数。

(1)模块初始化

(2)申请模块资源

(3)获取模块资源

(4)释放模块资源

(5)查找模块资源

(6)显示模块资源

为了说明问题,我们可以用一个mailist来说明一个简单的模块应该怎么设计。当然,朋友们可以选择其他的功能进行实现。模块的功能虽然比较少,但是可以说明很多问题,大家可以多多练习。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <memory.h>#define STATUS int
#define OK 0
#define ERROR -1#define MAX_RECORD_NUMBER 100
#define MAX_NAME_LEN 32
#define PHONE_NUMBER 9struct TELEPH_MAIL_LIST
{char name[MAX_NAME_LEN];int phone[PHONE_NUMBER];
};static struct TELEPH_MAIL_LIST g_mail_list[MAX_RECORD_NUMBER]; void module_init()
{memset(g_mail_list, 0, sizeof(g_mail_list));
} struct TELEPH_MAIL_LIST* alloc_record()
{int index;for(index = 0; index < MAX_RECORD_NUMBER; index++){if(0 == strlen(g_mail_list[index].name)){return &g_mail_list[index];}}return NULL;
}void del_record(struct TELEPH_MAIL_LIST* p_mail_list)
{if(p_mail_list < 0 || p_mail_list >= &g_mail_list[MAX_RECORD_NUMBER]){return;}memset(p_mail_list, 0, sizeof(struct TELEPH_MAIL_LIST));
}int find_record(char* name)
{int index;for(index = 0; index < MAX_RECORD_NUMBER; index++){if(0 == strncmp(g_mail_list[index].name, name, MAX_NAME_LEN)){return index;}}return ERROR;
}STATUS add_record(char* name, int phone[])
{struct TELEPH_MAIL_LIST* p_mail_list;if(ERROR != find_record(name)){return ERROR;}p_mail_list = alloc_record();if(NULL == p_mail_list){return ERROR;}strncpy(p_mail_list->name, name, strlen(name));memmove(p_mail_list->phone, phone, sizeof(int) * PHONE_NUMBER);return OK;
}void show_record()
{int index ;int number;for(index = 0; index < MAX_RECORD_NUMBER; index ++){if(0 == strlen(g_mail_list[index].name)){continue;}printf("[name] : %s\n", g_mail_list[index].name);printf("[phon] : ");for(number = 0; number < PHONE_NUMBER; number ++){printf("%d", g_mail_list[index].phone[number]);}printf("\n");}
}int main(int argc, char* argv[])
{struct TELEPH_MAIL_LIST* p_mail_list;int phone[] = {1,2,3,4,5,6,7,8,9};module_init();add_record("hello", phone);show_record();del_record(&g_mail_list[find_record("hello")]);show_record();return 1;
}

随想录(编写简单资源管理代码)相关推荐

  1. 代码不朽笔记: 编写简单的代码单元

    文章目录 原则 名词 代码示例 保留问题 原则 限制每个代码单元分支点的数量不超过4个. 应该将复杂的单元拆分成多个更简单的单元,避免多个复杂的单元在一起. 该原则能提高可维护性的原因在于,分支点越少 ...

  2. Linux环境下安装python并编写简单程序

    本项目以python 3.9.12为例(最新版本可能会有些兼容性问题,所以我们不选择最新版本) 在Linux(ubuntu)环境下进行安装python并编写简单的程序,输出自己的名字 1.在官网进行下 ...

  3. [书目20160623]编程匠艺——编写卓越的代码

    本文转自:http://blog.chinaunix.net/uid-13164110-id-3410985.html 编程匠艺--编写卓越的代码  [美]Pete Goodliffe(皮特.古德利弗 ...

  4. C++ 17 标准正式发布:终于能更简单地编写和维护代码了!

    点击上方"CSDN",选择"置顶公众号" 关键时刻,第一时间送达! 何为 C++ 17? C++17 是继 C++14 之后,C++ 编程语言 ISO/IEC ...

  5. vb计算机清除菜单代码,用VB编写简单的程序来清空文档菜单 (转)

    用VB编写简单的程序来清空文档菜单 (转)[@more@]文档菜单放的是我们最近使用的的快捷方式,它所对应的目录在 95(或)目录下的Recent目录.当我们不在需要这些快捷方式时,我们可以清空文档菜 ...

  6. python使用spark_如何在Python中编写简单代码,并且速度超越Spark?

    全文共3482字,预计学习时长7分钟 如今,大家都在Python工具(pandas和Scikit-learn)的简洁性.Spark和Hadoop的可扩展性以及Kubernetes的操作就绪之间做选择. ...

  7. python 字节流分段_如何在Python中编写简单代码,并且速度超越Spark?

    全文共 3482字,预计学习时长 7分钟 如今,大家都在Python工具(pandas和Scikit-learn)的简洁性.Spark和Hadoop的可扩展性以及Kubernetes的操作就绪之间做选 ...

  8. 乘法口诀表python_学习python之编写简单乘法口诀表实现代码

    学习python之编写简单乘法口诀表实现代码 更新时间:2016年02月27日 22:23:30 投稿:mdxy-dxy 这篇文章主要介绍了学习python之编写简单乘法口诀表实现代码,需要的朋友可以 ...

  9. VBA-Excel中编写简单的加法运算(示例)

    本文中,为大家编写一个简单的加法程序,其他复杂的运算的程序可以以这个为基础来进行编写. 步骤如下: 1.打开Excel表,注意一定要配置好开发环境,点击"开发工具"在子菜单中选择& ...

最新文章

  1. C# 的快捷键汇总(一)
  2. spring中配置properties资源文件
  3. Kafka Zero-Copy 使用分析
  4. 为什么一些机器学习模型需要对数据进行归一化?
  5. python之获取微信服务器的ip地址
  6. docker删除本地已下载的镜像
  7. .NET Core 微服务之Polly熔断策略
  8. ThinkCMF是一款支持Swoole的开源内容管理框架,基于ThinkPHP开发,同时支持PHP-FPM和Swoole双模式,让WEB开发更快!
  9. qpsk的matlab平方根升余,【求助】求助:【QPSK功率谱密度的matlab的代码】 - 仿真模拟 - 小木虫 - 学术 科研 互动社区...
  10. AS5047P磁编码器ESP32驱动程序、硬件电路设计、SPI通信时序、逻辑波形分析、注意事项
  11. CentOS 6U7分区大于2TB的磁盘以及挂载大于16TB分区磁盘的解决方案
  12. neo4j python可视化_Python使用py2neo操作图数据库neo4j的方法详解
  13. 微信聊天图片视频怎么防撤回?自动备份/保存微信的聊天图片和视频(天有不撤图片视频)
  14. git pull拉去不到最新代码 更新不出来代码
  15. Python爬虫实战:css加密 动态字体练习 猿人学比赛题目七题详解
  16. (保姆级)国内1块钱注册火爆全网的OpenAI-ChatGPT机器人
  17. 2017年网易有数用户定位和产品能力
  18. uni-app 上下滑动左右滑动
  19. 为什么装完计算机系统后进不去,电脑系统装完后为啥进不去?
  20. Java 调用第三方接口,实战来了!

热门文章

  1. python在webservice接口测试中的应用
  2. 基于库函数STM32流水灯的实现
  3. 浏览——用户自定义路径
  4. MFC实现BCB中的ProcessMessages
  5. python打包exe
  6. Java_MD5的使用
  7. python爬虫播放mp3
  8. diskData磁盘数据分析
  9. 几个常用的CSS3样式代码以及不兼容的解决办法
  10. 安卓航班Android开发经典教程大总结1----基础编程及源码推送