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