Jam*_*ris 7 c linux settings file-io
我的程序正在读取包含设置文件的各种文本行的文本文件.有些线路可能变得非常大.目前缓冲区大小为4096个字符.某些线路可能会超出此范围,无论是通过恶意还是由于程序中运行的各种因素.
当前的例程编写起来相当繁琐,现在我想扩展文件的可能内容,这将需要更多这些繁琐的重复代码.(这适用于设置类型文件,由name value
对和偶尔的节标题组成.由于多个精度,某些数值需要作为字符串读取).
我想要的主要是读取没有缓冲区溢出的任意长度行.我刚刚发现getline可以为我做到这一点,但是,为了天堂的缘故,还有一个图书馆可以为我做这一切繁琐的工作吗?
编辑:
我不希望被迫=
在名称和值之间放置一个符号,空格应该足以作为分隔符.
广泛使用,我的意思是该库应该在流行的Linux发行版的标准包中提供.
我知道libconfig但是我的要求似乎完全矫枉过正.
我的建议是DIY,因为这很容易。
读取每一行
计算分隔符之前和分隔符之后的字符数
分配缓冲区
并使用 sscanf 读取名称值对
喜欢:
sscanf(line, "%[^:]: %[^\n]", key, value);
你会很安全,因为你之前计算过字符sccanf
。