getcwd

getcwd

函式名稱:getcwd()會將當前工作目錄的絕對路徑複製到參數buffer所指的記憶體空間中,參數maxlen為buffer的空間大小。

基本介紹

  • 外文名:getcwd
  • 函式原型:char *getcwd
  • 功 能:獲取當前工作目錄
  • 頭檔案:unistd.h
函式簡介,UNIX C函式,範例,VC++6.0,VS2008,

函式簡介


函式原型:char *getcwd( char *buffer, int maxlen );
getcwdgetcwd
功 能:獲取當前工作目錄
參數說明: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); }}

相關詞條

熱門詞條

聯絡我們