用不同的思路去完成简单的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;}尝试着使用不同的思路与编程手法去编写,一些功能简单的小摸块;可以打开自己的编程思路与体系设计思路,同时也可以掌握更多自己少有但是实用的编程技巧。总的来说,还是蛮有意思的。:-)
- 用不同的思路去完成简单的C程序编写
- 完成了简单记事本程序的编写
- 用C编写的简单程序
- 简单的servlet程序的编写2— 完成程序
- C语言完成简单的输入输出程序
- 用JS编写日历的简单思路
- 用JS编写日历的简单思路
- js如何用面向对象的思路去编写一个程序
- C编写的简单病毒程序
- C语言编写的简单计算器程序
- 用C语言编写简单的接口程序
- 用C语言编写一系列简单的程序
- 今天编写双线程程序的思路
- 程序的编写思路一定要清晰
- 用循环控制语句编写程序,完成表达式的计算
- 用循环控制语句编写程序,完成表达式的计算
- 怎样编写一个简单的C语言程序的全过程
- Linux下C语言程序简单的编写和调试
- 用phpMyAdmin备份mysql数据库表。
- web.xml中classpath:和classpath*:
- uboot,内核uImage,网络根文件系统nfs的搭建(基于友善mini2440)
- hama学习笔记(5)-Zookeeper的配置问题一例
- spring aop expression简单说明
- 用不同的思路去完成简单的C程序编写
- C程序设计课程-2012电子信息 第三堂课后作业
- cp 命令 提示cp: 略过目录 “/root/temp/sk”
- IDA为什么产生 sp-analysis failed 错误?
- struts学习笔记——参数接收
- MQT
- 图片向左滚动新代码
- 黑马程序员-异常
- 服务器架设:CentOS搭建LNMP详细教程