用不同的思路去完成简单的C程序编写

来源:互联网 发布:形容梦醒怅然若失知乎 编辑:程序博客网 时间:2024/06/05 10:41

头文件1:func_desc.h

#ifndef __FUNC_DESC_H__#define __FUNC_DESC_H__#include <stdio.h>#include <String.h>#include <malloc.h>#include "register_mod.h"#define  NUMBER_XJ2struct 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_10struct 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;}
尝试着使用不同的思路与编程手法去编写,一些功能简单的小摸块;可以打开自己的编程思路与体系设计思路,同时也可以掌握更多自己少有但是实用的编程技巧。总的来说,还是蛮有意思的。:-)

原创粉丝点击