实现抽象任务角色 Spring框架很多地方用到了委派模式,例如 Dispatcher(转发) 代码实现 /** * 委派模式 * @author Shendi <a href='tencent://<em>AddContact</em>...; } } /** * 抽象任务角色 * @author Shendi <a href='tencent://AddContact/?...* @author Shendi <a href='tencent://<em>AddContact</em>/?...@param name 委派名 */ void exec(String name); } /** * 委派者 * @author Shendi <a href='tencent://AddContact...= null) d.exec(name); } } /** * 具体任务角色A * @author Shendi <a href='tencent://<em>AddContact</em>/?
http://www.springframework.org/tags/form” prefix=”form”%> 按如下方式编写表单: <form:form method=”post” action=”addContact...contact”, “command”, new Contact()); } command是缺省值,如果你想修改自己指定值,需要在中添加commandName=”xxx”,例如: 参考文档: http
]; char addr[ADDR_MAX]; }PeoInfo; //初始化通讯录 void InitContact(contact** con);//ok //添加通讯录数据 void AddContact...电话: 住址:\n"); scanf("%s %s %d %s %s", (*x)->name, (*x)->sex,&(*x)->age,(*x)->tel,(*x)->addr); } void AddContact...include"Mumber.h" //void test() //{ // contact* mumber; // //初始化 // InitContact(&mumber); // //插入三个 // AddContact...(&mumber); // AddContact(&mumber); // AddContact(&mumber); // //头删除 //删除最近加入的 // //DelContact(&mumber...contact* mumber; InitContact(&mumber); do { meau(); scanf("%d", &n); switch (n) { case 1: AddContact
记录的是当前通讯录中存放的人的信息数 int capacity;//记录的是当前通讯录的容量 }Contact; //初始化通讯录 void InitContact(Contact* pc); //增加联系人 void AddContact...NULL) { pc->data = ptr; pc->capacity += 2; printf("增容成功\n"); } else { perror("AddContact...Contact* pc) { free(pc->data); pc->data = NULL; pc->sz = 0; pc->capacity = 0; } //动态通讯录版本 void AddContact...请输入地址:"); scanf("%s", pc->data[pc->sz].addr); pc->sz++; printf("增加成功\n"); } //静态通讯录版本 //void AddContact...; do { menu(); printf("输入你的选择:"); scanf("%d", &input); switch (input) { case ADD: AddContact
=NULL) { pc->data=ptr; pc->capacity+=ADD_PEO; } else { perror("AddContact");...2.4 增加联系人函数AddContact void AddContact(Contact* pc) { if(pc->sz==pc->capacity) { (Peoinfo*)ptr=(Peoinfo...=NULL) { pc->data=ptr; pc->capacity+=ADD_PEO; } else { perror("AddContact"); printf...= NULL) { pc->data = ptr; pc->capacity+=ADD_PEO; } else { perror("AddContact"...\n"); } else { perror("AddContact"); printf("增加联系人失败!
TEL_MAX]; char addr[ADDR_MAX]; }PeoInfo; //初始化通讯录 void InitContact(contact** con); //添加通讯录数据 void AddContact...contact)); if (*con == NULL) return; (*con)->data = NULL; (*con)->next = NULL; } //添加通讯录数据 void AddContact...con) { SListDesTroy(con); } test.c #include "tel.h" void test1() { contact* s1; InitContact(&s1); AddContact...(&s1); ShowContact(s1); AddContact(&s1); ShowContact(s1); /*AddContact(&s1); ShowContact(s1); DelContact
记录的是当前通讯录中存放的人的信息数 int capacity;//记录的是当前通讯录的容量 }Contact; //初始化通讯录 void InitContact(Contact* pc); //增加联系人 void AddContact...perror("InitContact->calloc"); return; } //加载文件中的信息到通讯录 LoadContact(pc); } //动态通讯录版本 void AddContact...请输入地址:"); scanf("%s", pc->data[pc->sz].addr); pc->sz++; printf("增加成功\n"); } //静态通讯录版本 //void AddContact...= NULL) { pc->data = ptr; pc->capacity += 2; printf("增容成功\n"); } else { perror("AddContact...; do { menu(); printf("输入你的选择:"); scanf("%d", &input); switch (input) { case ADD: AddContact
(person*)realloc(pc->data, sizeof(person) * (pc->capacity + 2)); if (str == NULL) { printf("addcontact...return 1; } else { pc->data = str; pc->capacity += 2; } printf("增容成功\n"); } } int addcontact...//记录通讯录的人数 int capacity;//记录当前通讯录有多少人 }contacts; //函数声明区 int initialize(contacts* pc);//初始化通讯录 int addcontact...(person*)realloc(pc->data, sizeof(person) * (pc->capacity + 2)); if (str == NULL) { printf("addcontact...) { printf("initialize:%s",strerror(errno)); return 1; } pc->capacity = 3; return 0; } int addcontact
'menuItem:openWithSafari' ] }); //显示部分菜单按钮 wx.showMenuItems({ menuList: [ 'menuItem:addContact...夜间模式: “menuItem:nightMode” 刷新: “menuItem:refresh” 查看公众号(已添加): “menuItem:profile” 查看公众号(未添加): “menuItem:addContact
Contact; 初始化通讯录 int InitContact(Contact* pc); 销毁通讯录 void DestroyContact(Contact* pc); 增加联系人到通讯录 void AddContact...PeoInfo*)realloc(pc->data, (pc->capacity + INC_SZ) * sizeof(PeoInfo)); if (ptr == NULL) { printf("AddContact...return; } else { pc->data = ptr; pc->capacity += INC_SZ; printf("增容成功\n"); } } } void AddContact...con); do { menu(); printf("请选择:->"); scanf("%d", &input); switch (input) { case ADD: AddContact
do { menu(); printf("请输入你的选择:>"); scanf("%d", &input); switch (input) { case ADD: AddContact...pc) { assert(pc); pc->sz = 0; memset(pc->data, 0, sizeof(pc->data)); } 5.添加联系人 首先在case语句中写上添加联系人函数AddContact...case ADD: AddContact(&con); break; 在contact.h中声明: void AddContact(Contact* pc);//增加联系人 在contact.c...void AddContact(Contact* pc) { assert(pc); if (pc->sz == MAX) { printf("通讯录已满,无法增加\n"); return...[MAX];//存放数据 int sz;//记录的是当前通讯录中存放的人的信息个数 }Contact; void InitContact(Contact* pc);//初始化通讯录 void AddContact
,有以下两点原因: 要改变实参的值,就要传地址过去 根据之前对结构体的学习,结构体一般传地址,因为传整个结构体要开辟的内存空间太大了 增加联系人: //contact.h //增加联系人 void AddContact...(Contact* pc); //contact.c void AddContact(Contact* pc) { if (100 == pc->sz) { printf("通讯录已满,无法添加...PeoInfo; //通讯录 typedef struct Contact { PeoInfo data[MAX]; int sz; }Contact; //contact.c void AddContact...); do { menu(); printf("请选择:>"); scanf("%d", &input); switch (input) { case ADD: AddContact...); do { menu(); printf("请选择:>"); scanf("%d", &input); switch (input) { case ADD: AddContact
con); do { menu(); printf("请选择:>"); scanf("%d", &input); switch (input) { case ADD: AddContact...InitContact(Contact* pc) { assert(pc); pc->count = 0; memset(pc->data, 0, sizeof(pc->data)); } void AddContact...con); do { menu(); printf("请选择:>"); scanf("%d", &input); switch (input) { case ADD: AddContact...PeoInfo* data; int count; int capacity; }Contact; //初始化 int InitContact(Contact* pc); //添加 void AddContact...else { pc->data = ptr; pc->capacity += INC_SZ; printf("增容成功\n"); } } } //动态的版本 void AddContact
addr[20]; }PeoInfo;//定义一个用户信息结构体并重命名为PeoInfo //初始化通讯录 void InitContact(contact* con); //添加通讯录数据 void AddContact...file.h" //初始化通讯录 void InitContact(contact* con) { SLInit(con);//直接调用顺序表的方法,初始化通讯录 } //添加通讯录数据 void AddContact...直接调用顺序表销毁 } test.c #include "file.h" #include "List.h" void Test() { contact con; InitContact(&con); AddContact...(&con); ShowContact(&con); AddContact(&con); ShowContact(&con); AddContact(&con); ShowContact(&con
我也不知道为什么-^_^ 以下是代码: <meta http-equiv="refresh" content="0; url=tencent://<em>AddContact</em>/?
MAX_PEO]; //联系人数量 int count; }Contact; //初始化 void Init(Contact* Peo); //菜单 void menu(); //增 void AddContact...{ menu(); printf("请输入你的选择>"); scanf("%d", &input); switch (input) { case ADD: //add AddContact...printf("**** 0.exit ****\n"); printf("******************************\n"); } //增 void AddContact...//联系人容量 int capacity; }Contact; //初始化 int InitContact(Contact* Peo); //菜单 void menu(); //增 void AddContact...{ menu(); printf("请输入你的选择>"); scanf("%d", &input); switch (input) { case ADD: //add AddContact
con); do { menu(); printf("请选择:>"); scanf("%d", &input); switch (input) { case ADD: AddContact...memset函数作用就是将data这个存储到通讯录这个结构体的数组初始化为0; 四、通讯录的添加 void AddContact(Contact* pc) { if (pc->sz == MAX)...string.h> void InitContact(Contact* pc) { memset(pc->data,0,sizeof(pc->data)); pc->sz = 0; } void AddContact...con); do { menu(); printf("请选择:>"); scanf("%d", &input); switch (input) { case ADD: AddContact...{ PeoInfo data[100]; int sz; }Contact; //初始化通讯录 void InitContact(Contact* pc); //增加联系人信息 void AddContact
代码 <meta http-equiv="refresh" content="0; url=tencent://<em>AddContact</em>/?
do { menu(); printf("请输入你的选择:>"); scanf("%d", &input); switch (input) { case ADD: AddContact...* data; int sz; int capacity; }Contact; //初始化通讯录 void InitContact(Contact* pc); //增加联系人 void AddContact...{ pc->data = ptr; pc->capacity += DEFAULT_INC; printf("增容成功\n"); } else { perror("AddContact...DestroyContact(Contact* pc) { free(pc->data); pc->data = NULL; pc->sz = 0; pc->capacity = 0; } void AddContact
领取专属 10元无门槛券
手把手带您无忧上云