数据结构
二叉树操作接口
在一个二叉树上插入一个节点
void TBTreeInsert(TBTree **root, TBTree *node);
功能:在一个二叉树上插入一个节点
参数:
参数 | 说明 |
---|---|
root | 二叉树根节点 |
node | 要插入节点指针 |
返回值:无
在一个二叉树上删除一个节点
void TBTreeDelete(TBTree **root, TBTree *node);
功能:在一个二叉树上删除一个节点
参数:
参数 | 说明 |
---|---|
root | 二叉树根节点 |
node | 要删除节点指针 |
返回值:无
在一个二叉树上查找节点
TBTree *TBTreeFind(TBTree *root, Tuintp id);
功能:在一个二叉树上查找节点
参数:
参数 | 说明 |
---|---|
root | 二叉树根节点 |
id | 传入节点id |
返回值:返回查找到的节点
队列操作接口
初始化队列
void TQueueInit(TQueue *queue, Tint data_size, Tint free_max_num, Tint queue_max_num);
功能:初始化队列
参数:
参数 | 说明 |
---|---|
queue | 队列 |
data_size | 队列上每个节点中要容纳的用户数据大小(字节) |
free_max_num | 当用户释放一个链表节点时,不立即释放内存而是保持起来的最大空闲节点数 |
queue_max_num | 该队列上可以分配的最大节点数(不包括空闲节点) |
返回值:无
重置队列为初始化状态
void TQueueReset(TQueue *queue);
功能:释放所有分配的节点内存,包括 free 的节点
参数:
参数 | 说明 |
---|---|
queue | 队列 |
返回值:无
分配队列节点
void *TQueueMalloc(TQueue *queue, Tbool if_head_or_tail);
功能:分配队列节点
参数:
参数 | 说明 |
---|---|
queue | 队列 |
if_head_or_tail | 为 TRUE 时在 head 处分配新节点,为 FALSE 时在 tail 处分配新节点 |
返回值:无
注解:
分配的新节点内存已经memset(0)了
示例:
my_node *pnode1 = TQueueMalloc(&my_queue, TRUE); //分配节点
TQueueFree(&my_queue, pnode1); //释放节点
把当前节点提升到队列最前面
void TQueueRaise(TQueue *queue, void *data);
功能:把当前节点提升到队列最前面
参数:
参数 | 说明 |
---|---|
queue | 队列 |
data | 当前节点 |
返回值:无
摘除并释放队列当前节点
void TQueueFree(TQueue *queue, void *data);
功能:摘除并释放队列当前节点
参数:
参数 | 说明 |
---|---|
queue | 队列 |
data | 当前节点 |
返回值:无
示例:
my_node *pnode1 = TQueueMalloc(&my_queue, TRUE); //分配节点
TQueueFree(&my_queue, pnode1); //释放节点
释放所有节点
void TQueueFreeAll(TQueue *queue);
功能:释放所有节点
参数:
参数 | 说明 |
---|---|
queue | 队列 |
返回值:无
获取当前节点的兄弟节点
void *TQueueSeek(TQueue *queue, void *data, Tbool if_next_or_prev);
功能:获取当前节点的兄弟节点
参数:
参数 | 说明 |
---|---|
queue | 队列 |
data | 当前节点 |
if_next_or_prev | 为 TRUE 则返回当前节点的后一个节点,为 FALSE 则返回当前节点的前一个节点 |
返回值:当前节点的兄弟节点
数组操作接口
初始化数组
void TArrayInit(TArray *parray, Tint size);
功能:初始化数组
参数:
参数 | 说明 |
---|---|
parray | 数组 |
size | 数组里的每个节点中要容纳的用户数据大小(字节) |
返回值:无
示例:
TArray my_array;
TArrayInit(&my_array, sizeof(my_node));
重置数组为初始化状态并释放所有分配的内存
void TArrayReset(TArray *parray);
功能:重置数组为初始化状态并释放所有分配的内存
参数:
参数 | 说明 |
---|---|
parray | 数组 |
返回值:无
获取数组元素的首地址
void *TArrayGet(TArray *parray, Tint i);
功能:获取数组元素的首地址
参数:
参数 | 说明 |
---|---|
parray | 数组 |
i | 获取数组元素的位置,i的取值为[0,数组元素个数-1],没有返回NULL |
返回值:第i个数组元素的首地址
添加数组元素
void *TArrayAdd(TArray *parray, Tint i, Tint n);
功能:添加数组元素
参数:
参数 | 说明 |
---|---|
parray | 数组 |
i | 要添加数组元素的位置 |
n | 增加的元素的个数 |
返回值:增加元素的首地址
注解:i 的范围为[0,数组元素个数-1],没有返回NULL,i=-1表示在尾部减少
示例:
my_node *pnode = TArrayAdd(&my_array, 0, 5);
my_node *pnode2 = TArrayAdd(&my_array, -1, 2);
TArrayDelete(&my_array, 0, 2);
TArrayDelete(&my_array, -1, 1);
删除数组元素
void TArrayDelete(TArray *parray, Tint i, Tint n);
功能:删除数组元素
参数:
参数 | 说明 |
---|---|
parray | 数组 |
i | 要删除数组元素的位置 |
n | 删除的元素的个数 |
返回值:无
注解:i 的范围为[0,数组元素个数-1],没有返回NULL,i=-1表示在尾部减少
示例:
my_node *pnode = TArrayAdd(&my_array, 0, 5);
my_node *pnode2 = TArrayAdd(&my_array, -1, 2);
TArrayDelete(&my_array, 0, 2);
TArrayDelete(&my_array, -1, 1);
清除数组元素
void TArrayClear(TArray *parray, Tint i, Tint n);
功能:清除数组元素
参数:
参数 | 说明 |
---|---|
parray | 数组 |
i | 要清除的数组元素的位置 |
n | 内存清0元素的个数 |
返回值:无
注解:i的范围为[0,数组元素个数-1],没有返回NULL,i=-1表示在尾部减少
设置数组元素个数
void *TArraySet(TArray *parray, Tint n);
功能:设置数组元素个数
参数:
参数 | 说明 |
---|---|
parray | 数组 |
n | 数组元素个数 |
返回值:第一个元素的内存地址
注解:直接设置数组的元素个数并只分配需要的内存, array 的大小为 n,内部不分配额外空间
THash节点
THash节点回调函数类型定义
THash 节点销毁/重置时的回调函数原型
typedef void (*THashNodeDestroy_Func)(THashNode *node, void *arg);
功能:THash 节点销毁/重置时的回调函数原型
参数:
参数 | 说明 |
---|---|
node | 将要销毁/重置的 THash 节点 |
arg | THashDestroy 传入的用户数据 |
返回值:无
注解:函数返回后会自动销毁/重置该node,回调函数中不能销毁/重置node
遍历 THash 节点的回调函数
typedef Tbool (* THashNodeVisit_Func)(THashNode *node, void *arg);
功能:遍历 THash 节点的回调函数
参数:
参数 | 说明 |
---|---|
node | THash节点 |
arg | 执行遍历函数传递的用户参数 |
返回值:TRUE 终止遍历
FALSE 继续遍历后一个节点
注解:此回调函数中不能删除该 THashNode 节点
THash节点操作接口
销毁当前 THash 数据结构
void THashDestroy(THash *str_id_hash, THashNodeDestroy_Func func, void *arg);
功能:销毁当前 THash 数据结构
参数:
参数 | 说明 |
---|---|
str_id_hash | THash 数据结构 |
func | 节点销毁时执行的回调函数 |
arg | 传入回调函数 func 中 |
返回值:无
示例:
void func(THashNode *node, void *arg)
{
int len;
char *str = THashGetString(node, &len);
printf("str=%s\n", str);
}
THashDestroy(hash, func, NULL);
注解:销毁每个哈希节点和整个 THash 数据结构,在销毁每个哈希节点之前都回调参数 func 函数,使得用户可以关联的资源。
重置 THash 节点
void THashReset(THash *str_id_hash, THashNodeDestroy_Func func, void *arg);
功能:重置 THash 节点
参数:
参数 | 说明 |
---|---|
str_id_hash | THash 数据结构 |
func | 节点重置时执行的回调函数 |
arg | 传入回调函数 func 中 |
返回值:无
示例:
void func(THashNode *node, void *arg)
{
int len;
char *str = THashGetString(node, &len);
printf("str=%s\n", str);
}
THashReset(hash, func, NULL);
通过节点名称查找 THash 节点
THashNode *THashStringFind(THash *str_hash, const char *name, Tint len, Tbool if_add);
功能:通过节点名称查找 THash 节点
参数:
参数 | 说明 |
---|---|
str_hash | THash 数据结构 |
name | 节点名称 |
len | name的长度 |
if_add | 如果要查找的节点不存在时是否新建一个节点并返回 |
返回值:查找结果
如果要查找的节点存在则返回该节点指针
如果要查找的节点不存在且 if_add 为 TRUE 则新建一个节点并返回该节点指针
如果要查找的节点不存在且 if_add 为 FALSE 则返回NULL
示例:
THashNode *node = THashStringFind(style_type_hash, str, -1, TRUE);
THashNodeSetData(node, (void*)"hello");
通过节点ID查找 THash 节点
THashNode *THashIDFind(THash *id_hash, Tuintp id, Tbool if_add);
功能:通过节点ID查找 THash 节点
参数:
参数 | 说明 |
---|---|
id_hash | THash数据结构 |
id | 节点ID,不能为None |
if_add | 如果要查找的节点不存在时是否新建一个节点并返回 |
返回值:查找结果
如果要查找的节点存在则返回该节点指针
如果要查找的节点不存在且 if_add 为 TRUE 则新建一个节点并返回该节点指针
如果要查找的节点不存在且 if_add 为 FALSE 则返回NULL
释放当前 THash 节点
void THashFreeNode(THash *str_id_hash, THashNode *hash);
功能:释放当前 THash 节点
参数:
参数 | 说明 |
---|---|
str_id_hash | THash 数据结构 |
hash | 将要被释放的 THash 节点 |
返回值:无
获取 THash 节点的字符串标识
const char *THashGetString(THashNode *hash, Tint *len);
功能:获取 THash 节点的字符串标识
参数:
参数 | 说明 |
---|---|
hash | THash 节点指针 |
len | 保存字符串标识长度 |
返回值:THash 节点的字符串标识
获取 THash 节点整数 ID 标识
Tuintp THashGetID(THashNode *hash);
功能:获取 THash 节点整数 ID 标识
参数:
参数 | 说明 |
---|---|
hash | THash 节点指针 |
返回值:THash 节点整数ID标识
给 THash 节点关联一个用户指针
void THashNodeSetData(THashNode *hash, void *data);
功能:给 THash 节点关联一个用户指针
参数:
参数 | 说明 |
---|---|
hash | THash 节点指针 |
data | 用户指针 |
返回值:无
获取当前 THash 节点关联的用户指针
void *THashNodeGetData(THashNode *hash);
功能:获取当前 THash 节点关联的用户指针
参数:
参数 | 说明 |
---|---|
hash | THash 节点指针 |
返回值:当前 THash 节点关联的用户指针
遍历每一个THash节点对节点遍历顺序不一定和节点的创建顺序相同
THashNode * THashVisitEach(THash *str_id_hash, THashNodeVisit_Func func, void *arg);
功能:遍历每一个THash节点对节点遍历顺序不一定和节点的创建顺序相同
参数:
参数 | 说明 |
---|---|
str_id_hash | THash 数据结构 |
func | 遍历每一个节点都会回调的回调函数 |
arg | 用户参数,会传递到回调函数func中 |
返回值:终止遍历时的THashNode;如果没有终止遍历, 返回NULL
将字符串转成哈希ID
Tuintp TString2HashID(const char *str, Tint len);
功能:将字符串转成哈希ID
参数:
参数 | 说明 |
---|---|
str | 传入字符串地址 |
len | 传入字符串固定长度 |
返回值:返回哈希ID
将字符串转成哈希ID
Tuintp TString2HashID2(const char *str, Tint *plen);
功能:将字符串转成哈希ID
参数:
参数 | 说明 |
---|---|
str | 传入字符串地址,长度不固定,'\0' 结束 |
plen | 得到传入长度len |
返回值:返回哈希ID
TTable
TTable回调函数类型定义
节点排序
typedef int (*TTableQuickSort_func)(const TTableNode *n1, const TTableNode *n2, void *arg);
功能:节点快速排序回调函数原型
参数:
参数 | 说明 |
---|---|
n1 | 节点1 |
n2 | 节点2 |
arg | 排序函数 TTableQuickSort 的传递的用户参数 |
返回值:TRUE 节点1和节点2互换顺序,FALSE 节点1和节点2顺序保持不变
TTable节点操作接口
创建TTable
TTable *TTableCreate(void);
功能:创建一个空表
参数:无
返回值:TTable 对象
示例:
/*创建一个表*/
TTable *my_table = TTableCreate();
清空TTable
void TTableReset(TTable *table);
功能:销毁所有节点,释放节点内存,回到新创建时的状态
参数:
参数 | 说明 |
---|---|
table | TTable 对象 |
返回值:无
示例:
/*清空我的表*/
TTableReset(my_table);
销毁TTable
void TTableDestroy(TTable *table);
功能:销毁所有节点和TTable本身,释放所有内存
参数:
参数 | 说明 |
---|---|
table | TTable 对象 |
返回值:无
示例:
/*摧毁我的表*/
TTableDestroy(my_table);
打印TTable
void TTableDump(TTable *table);
功能:打印一个TTable的内容,用于调试
参数:
参数 | 说明 |
---|---|
table | TTable 对象 |
返回值:无
打印:
/*打印我的表*/
TTableDump(my_table);
/*结果演示*/
{
name="xiaoBlue"
age=23
}
复制TTable(创建)
TTable *TTableCopy(TTable *src, TTable *dst);
功能:复制一个TTable的内容
参数:
参数 | 说明 |
---|---|
src | 源 TTable |
dst | 目标 TTbale |
返回值:返回 dst, 如果(src!=NULL)&&(dst==NULL) 就创建一个返回
示例:
TTable *dst_table = TTableCreate();
TTableCopy(src_table, dst_table);
TTableDump(dst_table);
复制TTable
TTable *TTableDuplicate(TTable *table);
功能:复制的 TTable 需要用户自己销毁等同于TTableCopy(table, NULL)
参数:
参数 | 说明 |
---|---|
table | 源 TTable |
返回值:复制后的 TTable
节点个数
Tint TTableGetCount(TTable *table);
功能:获取TTable节点个数
参数:
参数 | 说明 |
---|---|
table | TTable 对象 |
返回值:table 的节点个数
示例:
int count = TTableGetCount(table);
父节点
TTable *TTableGetParent(TTable *table);
功能:获取TTable的父节点
参数:
参数 | 说明 |
---|---|
table | TTable 对象 |
返回值:TTable 的父节点
示例:
TTable *parent = TTableGetParent(table);
创建和查找
TTableNode *TTableGetNode(TTable *table, T_ID id, Tbool if_create);
功能:创建或查找table中为id的节点
参数:
参数 | 说明 |
---|---|
table | TTable 对象 |
id | 要查找的节点 id,如果id 为 None,就增加一个空节点 |
if_create | 为TRUE 则增加一个空节点并返回,否则返回NULL |
返回值:如果节点存在则返回此节点指针,否则返回NULL
示例:
TTableNode *node = TTableGetNode(table, TStrigID("node"), True);
TTableNodeSetInt(node, 0);
序号查找
TTableNode *TTableGetIndexNode(TTable *table, Tint index);
功能:获取table中指定序号index的节点
参数:
参数 | 说明 |
---|---|
table | TTable 对象 |
index | 节点序号,取值范围为[0,节点个数-1] |
返回值:指定序号的节点,节点个数为0则返回NULL
示例:
for(int i = 0 ;i < TTableGetCount(table); i++)
{
TTableNode *node = TTableGetIndexNode(table, i);
int val = TTableNodeGetInt(node, TStringID("val"));
printf("val = %d\n", val);
}
删除节点
void TTableDeleteNode(TTable *table, TTableNode *node);
功能:删除table中的node节点,该函数的时间是O(n)
参数:
参数 | 说明 |
---|---|
table | TTable 对象 |
node | 要删除的节点 |
返回值:无
示例:
TTableDeleteNode(table, TTableGetNode(table, TStrigID("node"), True));
整型节点赋值
Tint TTableNodeSetInt(TTableNode *tnode, Tintp value);
功能:给整数型节点tnode赋值value,首次赋值也可理解为创建一个整型的节点并赋值
参数:
参数 | 说明 |
---|---|
tnode | 节点对象 |
value | 需要设置的值 |
返回值:类型不对返回-1,修改成功返回0
示例:
TTableNodeSetInt(node, 0);
浮点型节点赋值
Tint TTableNodeSetFloat(TTableNode *tnode, TFloat value);
功能:给浮点型节点tnode赋值value,首次赋值也可理解为创建一个浮点型的节点并赋值
参数:
参数 | 说明 |
---|---|
tnode | 节点对象 |
value | 需要设置的值 |
返回值:类型不对返回-1,修改成功返回0
示例:
TTableNodeSetFloat(node, 1);
给指针型节点赋值
Tint TTableNodeSetPointer(TTableNode *tnode, void *value);
功能:给指针型节点tnode赋值value,首次赋值也可理解为创建一个指针型的节点并赋值
参数:
参数 | 说明 |
---|---|
tnode | 节点对象 |
value | 需要设置的值 |
返回值:类型不对返回-1,修改成功返回0
TTableNodeSetPointer(node, (void *)value);
表格型节点赋值
Tint TTableNodeSetTable(TTableNode *tnode, TTable *value);
功能:给表格型节点tnode赋值value并自动释放以前的table,首次赋值也可理解为创建一个表格型的节点并赋值
参数:
参数 | 说明 |
---|---|
tnode | 节点对象 |
value | 需要设置的值 |
返回值:类型不对返回-1,修改成功返回0
示例:
TTable *value = TTableCreate();
TTableNodeSetTable(node, value);
字符串型节点赋值
Tint TTableNodeSetString(TTableNode *tnode, const char *value, Tint len);
功能:给字符串型节点tnode赋值value,首次赋值也可理解为创建一个字符串型的节点并赋值
参数:
参数 | 说明 |
---|---|
tnode | 节点对象 |
value | 需要设置的值 |
len | 如果len==-1,那么len=strlen(value);如果len==0,那么value==NULL;如果len > 0,那么内部分配(len+1)内存,拷贝value内存,并末尾置'\0' |
返回值:类型不对返回-1,修改成功返回0
示例:
TTableNodeSetString(node, "hello world", -1);
节点类型
TTableNodeTypeEnum TTableNodeGetType(TTableNode *tnode);
功能:获取节点tnode的值的类型
参数:
参数 | 说明 |
---|---|
tnode | 节点对象 |
返回值:当前节点的值的类型
示例:
TTableNodeTypeEnum type = TTableNodeGetType(node);
节点ID
T_ID TTableNodeGetID(TTableNode *tnode);
功能:获取节点tnode的ID
参数:
参数 | 说明 |
---|---|
tnode | 节点对象 |
返回值:当前节点的ID
示例:
T_ID type = TTableNodeGetID(node);
获取整型节点值
Tintp TTableNodeGetInt(TTableNode *tnode);
功能:获取整数型节点tnode的值
参数:
参数 | 说明 |
---|---|
tnode | 节点对象 |
返回值:节点不存在返回0,否则返回当前节点的值;返回0也有可能是节点值本身就是0,或者类型不匹配
示例:
int value = TTableNodeGetInt(node);
获取浮点型节点值
TFloat TTableNodeGetFloat(TTableNode *tnode);
功能:获取浮点型节点tnode的值
参数:
参数 | 说明 |
---|---|
tnode | 节点对象 |
返回值:节点不存在返回0,否则返回当前节点的值;返回0也有可能是节点值本身就是0,或者类型不匹配
示例:
TFloat value = TTableNodeGetFloat(node);
获取指针型节点值
void *TTableNodeGetPointer(TTableNode *tnode);
功能:获取指针型节点tnode的值
参数:
参数 | 说明 |
---|---|
tnode | 节点对象 |
返回值:节点不存在返回NULL,否则返回当前节点的值;返回NULL也有可能是节点值本身就是NULL,或者类型不匹配
示例:
TTable *value = TTableNodeGetPointer(node);
获取字符串型节点值
char *TTableNodeGetString(TTableNode *tnode, Tint *len);
功能:获取字符串型节点tnode的值
参数:
参数 | 说明 |
---|---|
tnode | 节点对象 |
len | 当前节点值的长度 |
返回值:节点不存在返回NULL,否则返回当前节点的值;返回NULL也有可能是节点值本身就是NULL,或者类型不匹配
示例:
char *str = TTableNodeGetString(node, &len);
获取表格型节点的值
TTable * TTableNodeGetTable(TTableNode *tnode, Tbool bring_out);
功能:获取表格型节点tnode的值
参数:
参数 | 说明 |
---|---|
tnode | 节点对象 |
bring_out | 是否把里面的table 指针赋NULL |
返回值:节点不存在返回NULL,否则返回当前节点的值;返回NULL也有可能是节点值本身就是NULL,或者类型不匹配
示例:
TTable *value = TTableNodeGetTable(node, True);
序列化内存大小
Tint TTableStringLength(TTable *table);
功能:获取table序列化所需的内存大小
参数:
参数 | 说明 |
---|---|
table | 需要序列化的table |
返回值:序列化所需的内存大小
示例:
Tint size = TTableStringLength(table);
序列化table
char *TTableToString(TTable *table, Tint *size);
Tint TTableToString2(TTable *table, char *buf);
功能:把table序列化成一段连续内存
参数:
参数 | 说明 |
---|---|
table | 需要序列化的table |
size | 返回内存大小 |
buf | 用户提供序列化的内存 |
返回值:TTableToString返回序列化内存的首地址;TTableToString2返回实际使用的内存大小,但要保证用户提供内存 buf 足够大
示例:
char *str = TTableToString(table, &size);
反序列化table
TTable *TTableFromString(const char *buf, Tint size);
TTable *TTableFromString2(const char *buf, Tint size);
功能:从一段指定大小size的内存buf中反序列化重构table
参数:
参数 | 说明 |
---|---|
buf | 需要反序列化的内存地址 |
size | 内存大小 |
返回值:反序列化后重构的 table;TTableFromString2会重构 table,table中的字符串项不拷贝,而是直接指向 buf 中的内容。
示例:
TTable *t = TTableFromString(buf, sizeof(buf));
序列化table(文件)
void TTableSaveToFile(TTable *table, const char *file);
功能:把table序列化成二进制数据文件file
参数:
参数 | 说明 |
---|---|
table | 传入table地址 |
file | 传入文件地址 |
返回值:无
示例:
TTableSaveToFile(table, TGetExecutePath("../etc/info.ini"));
反序列化table(文件)
TTable *TTableLoadFromFile(const char *file);
功能:从序列化的二进制数据文件file中加载table
参数:
参数 | 说明 |
---|---|
file | 传入序列化文件地址 |
返回值:TTable 传入从序列化的二进制文件中加载的table
示例:
TTable *value = TTableLoadFromFile(TGetExecutePath("../etc/info.ini"));
节点排序
void TTableQuickSort(TTable * table, TTableQuickSort_func sort_func, void *arg);
功能:将table的节点按照sort_func的规则排序
参数:
参数 | 说明 |
---|---|
table | 需要排序的table |
sort_func | 回调函数 |
arg | 传递到回调函数中的用户参数参数 |
返回值:无
示例:
int sort_func(const TTableNode *n1, const TTableNode *n2, void *arg)
{
if (TTableNodeGetInt(n1)>=TTableNodeGetInt(n2))
return 1;
return 0;
}
TTableQuickSort(table, sort_func, NULL);
字符串转TTable
TTable *TParseTableString(TTable *table, const char *buf, Tint len);
功能:将一个字符串buf转化成TTable结构
参数:
参数 | 说明 |
---|---|
table | 为NULL时内部会创建一个新的 table 并返回,否则将file中的内容加入到已有的table中 |
buf | 要转化的字符串首地址 |
len | 字符串长度 |
返回值:转化后的 TTable 结构
示例:
TTable *t = TParseTableString(table, buf, strlen(buf));
过滤文本
void TFileWriteCFGParse_filter(int fd, struct CFG_Context *parse);
功能:过滤文本的功能 过滤规则:
- 去掉"#" 注释
- 消除UTF-8 BOM 标记的代码
- 去掉文本中的'\0'
- 最后增加一个'\n'
参数:
参数 | 说明 |
---|---|
fd | 文件描述符 |
parse | 要处理的文本内容 |
返回值:无
TTable化配置文件
TTable *TLoadIniFile(TTable *table, const char *file, TIniFileFlag_Func func);
功能:将配置文件file中的内容读取到一个TTable中
参数:
参数 | 说明 |
---|---|
table | 为NULL时内部会创建一个新的 table 并返回,否则将file中的内容加入到已有的table中 |
file | 文件路径 |
func | 一般传 NULL |
返回值:TTable 返回从文件读取到的TTable
示例:
TTable *table = TLoadIniFile(NULL, TGetExecutePath("../etc/info.ini"), NULL);
保存TTable到配置文件
void TSaveIniFile(TTable *table, const char *file);
功能:将TTable中的内容保存到配置文件file中
参数:
参数 | 说明 |
---|---|
table | 要保存的 TTable |
file | 文件路径 |
返回值:无
示例:
TSaveIniFile(table, TGetExecutePath("../etc/info.ini"));