结构中文件路径字段的长度

时间:2014-10-22 17:51:45

标签: c

我正在构建一个读取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足够的字节?

感谢您的帮助。

2 个答案:

答案 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;
};