用不同的思路去完成简单的C程序编写
2013-03-21 02:00
429 查看
头文件1:func_desc.h
头文件2:register_mod.h
辅助模块:register.c
#ifndef __FUNC_DESC_H__ #define __FUNC_DESC_H__ #include <stdio.h> #include <String.h> #include <malloc.h> #include "register_mod.h" #define NUMBER_XJ 2 struct class_attr; struct func_operations { void (*change_id)(struct class_attr *arg1, int id); int (*compera_values)(struct class_attr *arg1, char *Str); void (*load_message)(struct class_attr *arg1); }; struct class_attr { int id; char private_data; char *name; char *number; char *message; struct func_operations *fops; }; #endif
头文件2:register_mod.h
#ifndef __REGISTER_MOD_H__ #define __REGISTER_MOD_H__ #include "func_desc.h" #define _LIST_MAX_LEN_ 10 struct t_list { int id; struct class_attr *attr; // struct t_list *next; }; void look_for_list_each(char *Str); int register_structs(struct class_attr *dev, struct func_operations *fops); #endif
辅助模块:register.c
#include "register_mod.h" static cnt = 0; static struct t_list m_list[_LIST_MAX_LEN_]; /* * 将结构体加入m_list数组中 */ int register_structs(struct class_attr *dev, struct func_operations *fops) { dev->fops = fops; m_list[cnt].attr = dev; m_list[cnt].id = dev->id; cnt++; return 0; } /* * 查找匹配数组元素 */ void look_for_list_each(char *Str) { int i; int ret; for (i = 0; (i < 10) && (NULL != m_list[i].attr); i++) { ret = m_list[i].attr->fops->compera_values(m_list[i].attr, Str); if (!ret) { m_list[i].attr->fops->load_message(m_list[i].attr); break; } if (9 == i) { goto failed_1t; } } failed_1t: printf("Didn't find the %s.\n", Str); }主模块:main.c
#include "func_desc.h" static struct class_attr *ops_stru; /* * 修改结构体id号 */ void change_id(struct class_attr *ops_stru, int id) { ops_stru->id = id; } /* * 比较结构体的name值 */ int compera_values(struct class_attr *ops_stru, char *Str) { if (!strcmp(ops_stru->name,Str)) { return 0; } else { return 1; } } /* * 打印结构体内部变量 */ void load_message(struct class_attr *ops_stru) { printf("Name : %s\n", ops_stru->name); printf("Number : %s\n", ops_stru->number); printf("Id : %d\n", ops_stru->id); printf("Message : %s\n", ops_stru->message); } struct func_operations f_ops = { .change_id = change_id, .compera_values = compera_values, .load_message = load_message, }; int main(int argc, char *argv[]) { char *input; /* 分配指针空间 */ input = (char *)malloc(sizeof(char) + 10); ops_stru = (struct class_attr *)malloc(sizeof(struct class_attr)); /* 初始化结构体特性 */ ops_stru->name = "XiaoJia"; ops_stru->number = "10524001"; ops_stru->id = NUMBER_XJ; ops_stru->message = "He is a boy."; /* 注册class_dev */ register_structs(ops_stru, &f_ops); /* 获取输入 */ printf("Input the name you want to find:"); scanf("%s",input); /* 查找是否存在此数据 */ look_for_list_each(input); /* 释放内存空间 */ free(input); free(ops_stru); return 0; }尝试着使用不同的思路与编程手法去编写,一些功能简单的小摸块;可以打开自己的编程思路与体系设计思路,同时也可以掌握更多自己少有但是实用的编程技巧。总的来说,还是蛮有意思的。:-)
相关文章推荐
- 简单的servlet程序的编写2— 完成程序
- 用java编写简单UDP网络通信程序
- 编写伪码步骤:(针对简单程序)做完每一步后再做下一步
- C++程序设计实验报告(十六)----用循环控制语句编写程序,完成表达式的计算
- C# 一个简单分词程序的思路和代码(四) 键树 查询记录
- 如何编写简单的应用window窗口程序
- 在linux下编写简单的c程序
- 编写简单java程序
- 初识python,编写一个简单的python程序
- C#学习-----简单程序编写
- 用java编写的一个简单走马灯程序
- Java网络学习笔记1:用(Server)Socket编写简单的客户/服务器程序
- 编写一个程序,可以通过次程序完成一个表的创建操作,输入表的名称,各个列的名称及类型,输入完成后直接通过JDBC创建指定的表。
- 在你用JSP-servlet编写程序时候可以用以下简单的乱码处理解决!!
- ffmpeg+sdl教程----编写一个简单的播放器4(让程序更模块化)
- J2EE技术规范(七)——JTA(理解JTA,编写简单的事务客户程序)
- 不要局限在完成当前飞鸽传书2009的简单思路上
- 用shell编写的简单密码加密程序,涉及到ASCII与字符的相互转换,以及命令结果输出到变量
- 编写程序利用模板交换不同类型的两个数
- 编写程序,完成文件复制功能,即将a.txt文件内容复制到b.txt文件中去