c++\c 中 getcwd()函数:取得当前的工作目录(working directory)

 

 

 

 

 

 

用 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;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章