【问题标题】:getcwd second parametergetcwd 第二个参数
【发布时间】:2011-02-14 12:23:54
【问题描述】:

如果读取当前目录,getcwd函数的第二个参数应该填什么?

【问题讨论】:

    标签: c++ getcwd


    【解决方案1】:

    要填充的缓冲区大小:

    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);
    

    【讨论】:

      【解决方案2】:

      你在第一个参数中提供的缓冲区的长度,这样就不会发生溢出。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-03-22
        • 2018-06-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-20
        相关资源
        最近更新 更多