汉字翻译c语言 | 您所在的位置:网站首页 › c语言翻译成中文在线 › 汉字翻译c语言 |
课程回顾 2作业讲解 3 指针复习 (1) 返回栈区地址 (错 (对 (错,p一直是空的,同时引起堆区空间没释放 ( tmp指针给堆空间赋值,最后堆区没有释放 04 指针复习_2 (注意:strcpy的第一个参数虽然没有* 但是实际操作的是指针所指向的内存,即:堆区的内存 案例: (p没有指向空间,所以段错误 5 二级指针做形参 07_快译通案例:单词的存储 08_快译通案例:单词遍历 09_快译通案例:释放堆区空间 10_快译通案例:单词查询 #include #include #include #define MAX 3 struct dict { char *key; char *content; }; void get_dict(struct dict **tmp) { //在堆区分配MAX个结构体空间 *tmp = (struct dict *)malloc(MAX * sizeof(struct dict)); if (*tmp == NULL) { return; } //需要给每个结构体设置内容 //第0个结构体 //放第0个单词 (*tmp)[0].key = (char *)malloc(strlen("a") + 1); strcpy((*tmp)[0].key, "a"); //放第0个单词的解析 (*(*tmp + 0)).content = (char *)malloc(strlen("art.字母a") + 1); //第1个结构体 (*tmp)[1].key = (char *)malloc(strlen("a.m.") + 1); strcpy((*tmp)[1].key, "a.m."); //放第1个单词的解析 (*(*tmp + 1)).content = (char *)malloc(strlen("a啊实打解析实的字母a") + 1); //第1个结构体 (*tmp)[2].key = (char *)malloc(strlen("abandon") + 1); strcpy((*tmp)[2].key, "abandon"); //放第2个单词的解析 (*(*tmp + 2)).content = (char *)malloc(strlen("抛弃、放弃") + 1); } void print_dict(struct dict *tmp) { int i = 0; for (i = 0; i < MAX; i++) { printf("[%s]%s\n", tmp[i].key, tmp[i].content); } } void free_dict(struct dict *tmp) { //先释放成员变量 int i = 0; for (i = 0; i < MAX; i++) { if (tmp[i].key != NULL) { free(tmp[i].key); tmp[i].key = NULL; } if (tmp[i].content != NULL) { free(tmp[i].content); tmp[i].content = NULL; } } //再释放结构体指针变量 free(tmp); tmp = NULL; } int search_dict(struct dict *tmp, char *key, char *content) { int i = 0; for (i = 0; i < MAX; i++) { if (strcmp(tmp[i].key, key) == 0) { strcpy(content, tmp[i].content); return 1; } } return 0; } int main(int argc, char const *argv[]) { struct dict *p = NULL; //1、给p分配空间,分配完空间后,需要设置内容 get_dict(&p); //2、遍历单词 // print_dict(p); //查询功能 char key[1024]; //单词 char content[1024]; //单词解析 while (1) { printf("请输入需要查询单词"); scanf("%s", key); if (strcmp(key, "break") == 0) { break; } //如果有返回真,没有返回假 int flag = search_dict(p, key, content); if (flag == 0) { printf("没有此单词: %s\n", key); } else { printf("[%s]的解释为: %s\n", key, content); } } //3、释放空间 free_dict(p); return 0; } 11_快译通案例:代码引导 12_快译通案例:代码编译运行 |
CopyRight 2018-2019 实验室设备网 版权所有 |