我正在构建一个读取XML配置文件的程序。 XML配置文件包含多个变量。其中一个是
<bin_file>/some/file/path/file.bin</bin_file>
在我的代码中,我有以下结构
struct buildConofig {
char foo[3];
char bar[2];
char bin_file[?];
};
代码查看XML文件并在结构中找到XML中的匹配元素。我不确定bin_file字段的长度应该是多少。文件路径大小是否有限制?
或者我应该在检查XML字段后使bin_file成为指针然后malloc足够的字节?
感谢您的帮助。
答案 0 :(得分:0)
正如其他人指出的那样,使用malloc()
可能是最安全的方法。在这种特殊情况下,依赖于FILENAME_MAX
之类的常量/宏可能会很危险。当从XML文档中读取该路径时,它仍然只是一个字符串,因此它几乎可以是任意长度(如果不手动切断它,则会很快溢出char buffer[FILENAME_MAX]
。)
答案 1 :(得分:-2)
ubuntu 12.04:
NAME_MAX: 255 //file max length
PATH_MAX: 4096 // path max length
如上所示,最大尺寸可能是255 * 4096 = 1044480?这意味着你应该这样做
char bin_file[1044480];
但不建议这样做。
你可以包含string.h,并且如下所示
#include<string.h>
struct buildConofig {
char foo[3];
char bar[2];
string bin_file;
};