首页 > 其他分享 >随想录(编写简单资源管理代码)

随想录(编写简单资源管理代码)

时间:2022-11-23 11:32:24浏览次数:44  
标签:index name int 随想录 list record mail 编写 资源管理


    不管编写什么软件,我们都会涉及到模块的编写。说是模块,其实就是管理一片资源,这些资源的概念很广,可以是内存、锁、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 9

struct 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;
}





标签:index,name,int,随想录,list,record,mail,编写,资源管理
From: https://blog.51cto.com/feixiaoxing/5880720

相关文章

  • 随想录(设计软件模块的接口)
       开发软件是一件复杂而且辛苦的工作,不同的模块之间的逻辑需要考虑,应用层与底层的关系也需要考虑。模块之间的关系处理不好,就会给软件的编写质量带来影响。当然不管软......
  • 随想录(矩阵计算的几种方法)
    【声明:版权所有,欢迎转载,请勿用于商业用途。】   要进行图像处理,矩阵运算是少不了的。不管是加减乘除,还是旋转、求逆、矩阵分解,都需要lib来好好支持。下面,主要就说一......
  • 随想录(机器学习的生产应用)
    【声明:版权所有,欢迎转载,请勿用于商业用途。     从范围上讲,人工智能>机器学习>模式识别。最近机器学习愈演愈烈,特别是深度学习的发展,极大的推动了机器学习的应......
  • 随想录(嵌入式工程师的出路)
    【声明:版权所有,欢迎转载,请勿用于商业用途。  嵌入式工程师分布在各行各业上面。这其中包括了消费电子、工业电子、汽车电子和军用电子等等。从功能上面看,嵌入式本身包......
  • 随想录(对比着c学java)
    【声明:版权所有,欢迎转载,请勿用于商业用途。  对于java,有两种论调。一种是鄙视,认为java是个人都能学,完全体现不出程序员的水平。还有一种,就是拔高java,认为java无所不能,j......
  • 随想录(被高估的busybox)
    【声明:版权所有,欢迎转载,请勿用于商业用途。  传统的嵌入式系统都是uboot+kernel+rootfs。其中最简单的rootfs就是ramfs+busybox+/dev+/etc+/lib。至于etc目录中的initt......
  • 随想录(c&cpp之间的相互调用)
    【声明:版权所有,欢迎转载,请勿用于商业用途。】  作为系统工程师,平时用c可能多一些。这两天因为工作的原因,了解了linux上面cpp的编写方法。很多时候,cpp对编写者的要求比......
  • 随想录(比技术更重要的是产品)
    【声明:版权所有,欢迎转载,请勿用于商业用途。  一般来说,做技术开发的同学往往对功能、技术和性能比较热衷,但是对产品却非常忽视。不管什么样的技术,最终都要以产品的形式......
  • 代码随想录day2| 977,209,59
    977.暴力法:整个数组平方,然后再nums.sort(),时间复杂度O(nlogn)空间复杂度O(1)双指针法:从两头开始遍历,l,r指向当前有可能的最大值,i象征着新数组对应的位置,从大到小,时间复杂度......
  • 代码随想录算法训练营第七天 | 454.四数相加II ● 383. 赎金信 ● 15. 三数之和 ●
    今日任务●454.四数相加II●383.赎金信●15.三数之和●18.四数之和●总结详细布置454.四数相加II建议:本题是使用map巧妙解决的问题,好好体......