天嵌二次封装库使用手册
V2.1.2
|
Implements a dictionary for string variables. 更多...
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
类 | |
struct | _dictionary_ |
dictionary对象结构体 更多... | |
类型定义 | |
typedef struct _dictionary_ | dictionary |
dictionary对象结构体 更多... | |
函数 | |
unsigned | dictionary_hash (const char *key) |
计算键的hash值 更多... | |
dictionary * | dictionary_new (size_t size) |
创建一个dictionary对象 更多... | |
void | dictionary_del (dictionary *vd) |
删除一个dictionary对象 更多... | |
const char * | dictionary_get (const dictionary *d, const char *key, const char *def) |
获取dictionary对象的key值 更多... | |
int | dictionary_set (dictionary *vd, const char *key, const char *val) |
设置dictionary对象的key值 更多... | |
void | dictionary_unset (dictionary *d, const char *key) |
删除dictionary对象的一个key值 更多... | |
void | dictionary_dump (const dictionary *d, FILE *out) |
将dictionary对象转储到已打开的文件指针中 更多... | |
Implements a dictionary for string variables.
Date | Version | Author | Description |
---|---|---|---|
2021-09-22 | 1.0 | zhengchuangyong | 第一次发布,对字典一些基本操作的函数封装. |
在文件 dictionary.h 中定义.
typedef struct _dictionary_ dictionary |
dictionary对象结构体
此对象包含一个字符串/字符串关联的列表。每个关联都由一个唯一的字符串键来标识。通过使用哈希函数可以加快 dictionary 中值的查找速度。
void dictionary_del | ( | dictionary * | vd | ) |
删除一个dictionary对象
vd | 要删除的字典对象 |
删除dictionary对象并释放对应存放dictionary的内存
void dictionary_dump | ( | const dictionary * | d, |
FILE * | out | ||
) |
将dictionary对象转储到已打开的文件指针中
d | 要转储的dictionary对象 |
out | 已打开的文件指针 |
将dictionary对象转储到已打开的文件指针上,键值对的存储格式为 [Key]=[Value], 一行一个键值对,也可作为标准输出或标准错误输出指针.
const char* dictionary_get | ( | const dictionary * | d, |
const char * | key, | ||
const char * | def | ||
) |
获取dictionary对象的key值
d | 要获取key值的dictionary对象 |
key | 要从dictionary对象获取的值对应的key |
def | 如果找不到key,返回的默认值 |
该函数在dictionary对象中找到一个key,并返回一个指向其值的指针,或者如果在dictionary中没有找到该key,则返回传递的默认指针。返回的字符指针指向dictionary对象内部的数据,不应该尝试释放或修改它。
unsigned dictionary_hash | ( | const char * | key | ) |
计算键的hash值
key | 要计算hash的键 |
这个哈希函数取自Dr Dobbs Journal上的一篇文章。这通常是一个无碰撞的函数,均匀地分布键。密钥都存储在结构中,以便通过最后比较密钥本身来避免碰撞。
dictionary* dictionary_new | ( | size_t | size | ) |
创建一个dictionary对象
size | dictionary大小 |
此函数分配一个给定大小的新dictionary对象并返回它。如果事先不知道dictionary对象的条目数,请指定大小为0。
int dictionary_set | ( | dictionary * | vd, |
const char * | key, | ||
const char * | val | ||
) |
设置dictionary对象的key值
vd | 要设置值的dictionary对象 |
key | 要修改或添加的key |
val | 要添加的值 |
如果在dictionary对象中找到了给定的key,则关联的值将被提供的值替换。如果在dictionary中找不到该key,则将其添加到其中。
为val提供一个NULL值也可以了,但是NULL值在dictionary或key中被认为是错误的:在这种情况下,函数将立即返回。
注意,如果将一个变量dictionary_set为NULL,则调用dictionary_get将返回一个NULL值:将找到该变量, 并返回其值(NULL)。换句话说,将变量内容设置为NULL相当于从dictionary对象中删除该变量。(在此实现中)不可能在字典中拥有一个没有值的密钥。
void dictionary_unset | ( | dictionary * | d, |
const char * | key | ||
) |
删除dictionary对象的一个key值
d | 要修改的dictionary对象 |
key | 要删除的key |
此函数将删除dictionary中的一个key。如果找不到key,则什么也不做。