QT案例词典 -- 存储内容及遍历

遗憾的是,两个人不能在一起,却偏偏相遇。。。

----  网易云热评

一、字典内容就三个词

a:第一个字母

b:第二个字母

C:第三个字母

#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_s((*tmp)[0].key,strlen("a")+1, "a");





    (*tmp)[0].content = (char*)malloc(strlen("第一个字母") + 1);

    strcpy_s((*tmp)[0].content, strlen("第一个字母") + 1, "第一个字母");









    //第1个结构体,放第1个单词

    (*tmp+1)->key = (char*)malloc(strlen("b") + 1);

    strcpy_s((*tmp + 1)->key, strlen("b") + 1, "b");





    (*(*tmp+1)).content = (char*)malloc(strlen("第二个字母") + 1);

    strcpy_s((*(*tmp + 1)).content, strlen("第二个字母") + 1, "第二个字母");





    //第2个结构体,放第2个单词

    (*tmp + 2)->key = (char*)malloc(strlen("c") + 1);

    strcpy_s((*tmp + 2)->key, strlen("c") + 1, "c");





    (*(*tmp + 2)).content = (char*)malloc(strlen("第三个字母") + 1);

    strcpy_s((*(*tmp + 2)).content, 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);

    }

    

}

 

五、调用

struct dict* p = NULL;

//1、给p分配空间,分配完空间后,需要设置内容

get_dict(&p);//通过函数分配空间

//2、遍历字典

print_dict(p);

 

六、运行结果

 

 

欢迎关注公众号:顺便编点程

 

 

 


版权声明:本文为weixin_41489908原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。