如果我正在读取当前目录,我应该填写函数getcwd的第二个参数吗?
问问题
622 次
2 回答
4
您要填充的缓冲区大小:
char result[PATH_MAX];
char *r = getcwd(result, PATH_MAX);
未能正确设置(或发现ENAMETOOLONG
/ ERANGE
)可能会导致缓冲区溢出问题。
警告:并非所有平台都提供 PATH_MAX。如果您可以确定它存在于您的平台上,那将非常方便。
您也可以使用realpath()
, (POSIX.1-2008) ,它可以malloc()
让您更清楚地做到这一点:
char *result = realpath(".", NULL);
// do stuff with result
free(result);
于 2011-02-14T12:26:28.793 回答
2
您在第一个参数中提供的缓冲区的长度,这样就不会发生溢出。
于 2011-02-14T12:26:13.107 回答