From 0fea59827cd01a8d8d95c9da9926c40a3c49179b Mon Sep 17 00:00:00 2001 From: brisk Date: Thu, 17 Apr 2014 14:16:52 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E5=88=9B=E5=BB=BA=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- example/create.c | 6 ++++-- example/newrc | 14 ++++++++++++++ src/conf.c | 6 ++++-- src/conf.h | 5 ++++- 4 files changed, 26 insertions(+), 5 deletions(-) create mode 100644 example/newrc diff --git a/example/create.c b/example/create.c index 8d321c4..778617c 100644 --- a/example/create.c +++ b/example/create.c @@ -17,11 +17,13 @@ int main(int argc,char **argv) //成功时返回0,出错时返回错误代码 //使用conf_error函数可打印错误代码的信息 - conf_insert(conf,"arg1","abc","这是一个测试文件\n\n单个参数"); + conf_insert(conf,NULL,NULL,"这是一个测试文件\n"); + conf_insert(conf,"arg1","abc","单个参数"); conf_insert(conf,"arg2","abc,def","多个参数"); conf_insert(conf,"arg3","\'abc def\'","空白符"); conf_insert(conf,"arg4","\"abc \' def\"","特殊符号"); - conf_insert(conf,"arg5","\"abc,def\",\"#this is value\",hello","多参数,特殊符号\n\n文件结束"); + conf_insert(conf,"arg5","\"abc,def\",\"#this is value\",hello\n","多参数,特殊符号"); + conf_insert(conf,NULL,NULL,"文件结束"); //保存配置文件 conf_save(conf); diff --git a/example/newrc b/example/newrc new file mode 100644 index 0000000..33dbcb7 --- /dev/null +++ b/example/newrc @@ -0,0 +1,14 @@ +#这是一个测试文件 + +#单个参数 +arg1 = abc +#多个参数 +arg2 = abc,def +#空白符 +arg3 = 'abc def' +#特殊符号 +arg4 = "abc ' def" +#多参数,特殊符号 +arg5 = "abc,def","#this is value",hello + +#文件结束 diff --git a/src/conf.c b/src/conf.c index 73ba93f..c62cab2 100644 --- a/src/conf.c +++ b/src/conf.c @@ -126,6 +126,7 @@ CONF_CREATER *conf_creater_new(const char *path) return NULL; } + creater->len=0; creater->key=NULL; creater->value=NULL; creater->note=NULL; @@ -138,8 +139,9 @@ int conf_insert(CONF_CREATER *creater,char *key,char *value,char *note) //结点 CONF_CREATER *temp; + ++creater->len; //如果是第一个参数,则直接放入 - if(creater->key == NULL) + if(creater->len == 1) { creater->key=key; creater->value=value; @@ -172,7 +174,7 @@ int conf_save(CONF_CREATER *creater) CONF_CREATER *head=creater; // int i; - if(creater->key == NULL) + if(creater->len == 0) return CONF_NO_DATA; while(creater != NULL) diff --git a/src/conf.h b/src/conf.h index f5ab9ca..c00c2f5 100644 --- a/src/conf.h +++ b/src/conf.h @@ -22,11 +22,14 @@ #define CONF_VALUE_ERR -5 //值错误 //保存配置文件数据结构 -//value为键值对数据结构 +//len为当前参数个数 +//key为键 +//value值 //note为注释 typedef struct creater { FILE *fp; + int len; char *key; char *value;