getcwd()
函式名稱:getcwd
- 外文名
- getcwd
- 函式原型
- char *getcwd
- 功 能
- 獲取當前工作目錄
- 標頭檔案
- unistd.h
函式簡介
編輯功 能:獲取當前工作目錄
引數說明:getcwd()會將當前工作目錄的絕對路徑複製到引數buffer所指的記憶體空間中,引數maxlen為buffer的空間大小。
返 回 值:成功則返回當前工作目錄,失敗返回 FALSE。
在某些 Unix 的變種下,如果任何父目錄沒有設定可讀或搜尋模式,即使當前目錄設定了,getcwd()還是會返回FALSE。有關模式與許可權的更多資訊見 chmod()。
標頭檔案:unistd.h(windows下為direct.h)
UNIX C函式
編輯#include <unistd.h>
char *getcwd(char *buf, size_t size);
作用:把當前目錄的絕對地址儲存到 buf 中,buf 的大小為 size。如果 size太小無法儲存該地址,返回 NULL 並設定 errno 為 ERANGE。可以採取令 buf 為 NULL並使 size 為負值來使 getcwd 呼叫 malloc 動態給 buf 分配,但是這種情況要特別注意使用後釋放緩衝以防止記憶體洩漏。
程式例如果在程式執行的過程中,目錄被刪除(EINVAL錯誤)或者有關許可權發生了變化(EACCESS錯誤),getcwd也可能會返回NULL。
範例
編輯
1
2
3
4
5
6
7
8
9
10
|
#include <stdio.h> #include <unistd.h> //標頭檔案在unix下是unistd.h,在TC2.0下是dir.h,在vc6.0定義在direct.h的標頭檔案,VS2008下是direct.h,應該依程式設計者的環境而定 int main( void ) { char buffer[MAXPATH]; getcwd(buffer,MAXPATH); printf ( "The current directoryis:%s\n" ,buffer); return 0; } |
VC++6.0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
#include <stdio.h> #include <direct.h> #include <stdlib.h> int main(intargc, char *argv[]) { char path[_MAX_PATH]; _getcwd(path,_MAX_PATH); printf ( "當前工作目錄:\n%s\n" ,path); if ((_chdir( "d:\\visualc++" ))==0) { printf ( "修改工作路徑成功\n" ); _getcwd(path,_MAX_PATH); printf ( "當前工作目錄:\n%s\n" ,path); } else { perror ( "修改工作路徑失敗" ); exit (1); } return 0; } |
VS2008
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
#include <direct.h> #include <string.h> #include <stdio.h> int main( void ) { char *buffer; //得到當前的工作路徑 if ((buffer=_getcwd(NULL,0))==NULL) perror ( "_getcwderror" ); else { printf ( "%s\nLength:%d\n" ,buffer, strlen (buffer)); free (buffer); } } |