如何删除 iniparser 创建的额外空格?
How do I remove extra whitespaces created by iniparser?
最近我主要选择iniparser。然而,它的 API 产生了太多的白色 space 导致内存浪费。
例如,iniparser_set()
将创建
/*test.ini*/
[section]
key = value
改为
/*test.ini*/
[section]
key = value
从嵌入式系统的角度来看,去除那些多余的白色space对于节省内存来说是一件好事space。那么,如何解决呢?
根据 iniparser (https://github.com/ndevilla/iniparser/blob/deb85ad4936d4ca32cc2260ce43323d47936410d/src/iniparser.c#L312) 的源代码:
在iniparser_dumpsection_ini
函数中,有这一行:
fprintf(f,
"%-30s = %s\n",
d->key[j]+seclen+1,
d->val[j] ? d->val[j] : "");
如您所见,密钥使用格式说明符 %-30s
打印,这可能是导致此问题的原因。
因此,您可以克隆 repo 源代码并进行更改。例如,将格式说明符替换为 %s
,例如:
fprintf(f,
"%s = %s\n", // CHANGE HERE
d->key[j]+seclen+1,
d->val[j] ? d->val[j] : "");
最近我主要选择iniparser。然而,它的 API 产生了太多的白色 space 导致内存浪费。
例如,iniparser_set()
将创建
/*test.ini*/
[section]
key = value
改为
/*test.ini*/
[section]
key = value
从嵌入式系统的角度来看,去除那些多余的白色space对于节省内存来说是一件好事space。那么,如何解决呢?
根据 iniparser (https://github.com/ndevilla/iniparser/blob/deb85ad4936d4ca32cc2260ce43323d47936410d/src/iniparser.c#L312) 的源代码:
在iniparser_dumpsection_ini
函数中,有这一行:
fprintf(f,
"%-30s = %s\n",
d->key[j]+seclen+1,
d->val[j] ? d->val[j] : "");
如您所见,密钥使用格式说明符 %-30s
打印,这可能是导致此问题的原因。
因此,您可以克隆 repo 源代码并进行更改。例如,将格式说明符替换为 %s
,例如:
fprintf(f,
"%s = %s\n", // CHANGE HERE
d->key[j]+seclen+1,
d->val[j] ? d->val[j] : "");