请输入您要查询的百科知识:

 

词条 getcwd
释义

函数简介

函数名称:_getcwd(在TC2.0下为getcwd)函数原型:char *_getcwd( char *buffer, int maxlen );

功 能:获取当前工作目录

参数说明:_getcwd()会将当前工作目录的绝对路径复制到参数buffer所指的内存空间中,参数maxlen为buffer的空间大小。

返 回 值:成功则返回当前工作目录,失败返回 FALSE

在某些 Unix 的变种下,如果任何父目录没有设定可读或搜索模式,即使当前目录设定了,getcwd()还是会返回 FALSE。有关模式与权限的更多信息见 chmod()。

头文件:direct.h(TC2.0下为dir.h)

Linux 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。

TC2.0的范例

#include <stdio.h>

#include <dir.h>

//头文件有可能不是dir.h,在vc6.0定义在#include <direct.h>的头文件,在qt4.5下是unistd.h,VS2008下是direct.h,应该依编程者的环境而定

int main(void)

{

char buffer[MAXPATH];

getcwd(buffer, MAXPATH);

printf("The current directory is: %s\", buffer);

return 0;

}

VC++6.0的范例

#include <stdio.h>

#include <direct.h>

#include <stdlib.h>

int main( int argc,char *argv[] )

{

char path[_MAX_PATH];

_getcwd(path,_MAX_PATH);

printf("当前工作目录:\%s\",path);

if( ( _chdir("d:\\\\visual c++") ) == 0 )

{

printf("修改工作路径成功\");

_getcwd(path,_MAX_PATH);

printf("当前工作目录:\%s\",path);

}

else

{

perror("修改工作路径失败");

exit(1);

}

return 0;

}

VS2008的范例

#include <direct.h>

#include <stdlib.h>

#include <stdio.h>

int main( void )

{

char* buffer;

// 得到当前的工作路径

if( (buffer = _getcwd( NULL, 0 )) == NULL )

perror( "_getcwd error" );

else

{

printf( "%s \Length: %d\", buffer, strnlen(buffer) );

free(buffer);

}

}

随便看

 

百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。

 

Copyright © 2004-2023 Cnenc.net All Rights Reserved
更新时间:2024/11/16 12:41:16