美文网首页
getcwd()函数:取得当前的工作目录(working dir

getcwd()函数:取得当前的工作目录(working dir

作者: 雨幻逐光 | 来源:发表于2019-03-27 15:05 被阅读0次

    用 c/c++ 获取当前工作目录的方法:getcwd
    首先我们来看一下该函数的声明:

    #include<unistd.h>
    char* getcwd(char* buffer, size_t size);
    

    用法介绍:
    参数说明:getcwd 方法会将当前工作目录(working directory)的绝对路径复制到参数 buffer 所指的内存空间中,而参数 sizebuffer 所指的空间大小。

    1. 第一种用法:
      基于上面的解析我们很容易得到第一种用法。
    #define MAX_SIZE 255
    int main(int argc, const char* argv[]){
        char path[MAX_SIZE];
        getcwd(path,sizeof(path));
        puts(path);  // puts is equal to print. In c++ we can use: cout << path << endl;
        return 0;
    }
    

    上面的方法会将当前工作目录的绝对路径复制到 path 所指的空间中,其中 size 通过宏定义 MAX_SIZE 给出。但是这种方法有个弊端。当我们的工作目录绝对路径长于所指定的 size 时,则会返回 NULL。所以用第一种方法时需要分配足够大的内存空间。linux的文件名长度限制为 255 个英文字符,所以一般需要指定 MAX_SIZE 为 255。

    1. 第二种用法:
      可以把 buffer 置为 NULL 并且是 size 为 0来使用 getcwd。此时,getcwd 会调用 malloc 动态的为 buffer 分配空间,所以我们应当在使用过后给 buffer 释放掉空间。
    int main(int argc, const char* argv[]){
        char* path;
        path = getcwd(NULL, 0);
        puts(path);
        free(path);
        return 0;
    }
    

    相关文章

      网友评论

          本文标题:getcwd()函数:取得当前的工作目录(working dir

          本文链接:https://www.haomeiwen.com/subject/plszvqtx.html