【发布时间】:2011-02-14 12:23:54
【问题描述】:
如果读取当前目录,getcwd函数的第二个参数应该填什么?
【问题讨论】:
如果读取当前目录,getcwd函数的第二个参数应该填什么?
【问题讨论】:
要填充的缓冲区大小:
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);
【讨论】:
你在第一个参数中提供的缓冲区的长度,这样就不会发生溢出。
【讨论】: