getcwd第二个参数

时间:2011-02-14 12:23:55

标签: c++ getcwd

如果我正在读取当前目录,我应该填写函数getcwd的第二个参数?

2 个答案:

答案 0 :(得分:4)

要填充的缓冲区大小:

char result[PATH_MAX];
char *r = getcwd(result, PATH_MAX);

无法正确设置(或发现ENAMETOOLONG / ERANGE)可能会导致缓冲区溢出问题。

警告:Not all platforms provide PATH_MAX。如果你可以确定它在你的平台上,那就非常方便了。

您还可以使用realpath(),(POSIX.1-2008)malloc()内存为您做得更干净:

char *result = realpath(".", NULL);
// do stuff with result
free(result);

答案 1 :(得分:2)

您在第一个参数中提供的缓冲区长度,因此不会发生溢出。