最近我把iniparser作為主要選擇。但是,其 API 會創建過多的空格,從而導致記憶體浪費。
例如,iniparser_set()將創建
/*test.ini*/
[section]
key = value
反而
/*test.ini*/
[section]
key = value
從嵌入式系統的角度來看,洗掉那些額外的空格對于節省記憶體空間是一件好事。那么,如何修復呢?
uj5u.com熱心網友回復:
根據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] : "");
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/393807.html
