如何删除 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] : "");