函式名稱:getcwd()會將當前工作目錄的絕對路徑複製到參數buffer所指的記憶體空間中,參數maxlen為buffer的空間大小。
基本介紹
- 外文名:getcwd
- 函式原型:char *getcwd
- 功 能:獲取當前工作目錄
- 頭檔案:unistd.h
函式簡介,UNIX C函式,範例,VC++6.0,VS2008,
函式簡介
函式原型:char *getcwd( char *buffer, int maxlen );
功 能:獲取當前工作目錄
參數說明: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 為0來使 getcwd 調用 malloc 動態給 buf 分配,但是這種情況要特別注意使用後釋放緩衝以防止記憶體泄漏。
程式例如果在程式運行的過程中,目錄被刪除(EINVAL錯誤)或者有關許可權發生了變化(EACCESS錯誤),getcwd也可能會返回NULL。
範例
#include <stdio.h>#include <unistd.h>#define MAXPATH 1000//頭檔案在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
#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
#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); }}