获取文件当前目录

本文对比分析了Windows系统中GetCurrentDirectory与_getcwd函数在路径获取上的使用方法与特性,通过代码示例展示了两者的一致性,并指出路径中是否能包含'.'符号的疑惑,最终提供了官方MSDN的帮助文档链接作为参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


1. GetCurrentDirectory

此函数是微软Windows 提供的。

头文件为WinBase.h

#ifdef UNICODE
#define GetCurrentDirectory  GetCurrentDirectoryW
#else
#define GetCurrentDirectory  GetCurrentDirectoryA
#endif // !UNICODE


简单来段代码

#include <windows.h>
std::wstring GetCurrentDirws()
{
	wchar_t buf[1000];
	GetCurrentDirectory(1000, buf);
	wstring strPath = buf;
	return strPath;
}

2._getcwd
此函数头文件为
 
#include <direct.h>
简单代码:

std::string GetCurrentDirs()
{
	char* buffer;
	string m_sRe;
	if( (buffer = _getcwd( NULL, 0 )) == NULL )
	{
		perror( "_getcwd error" );
	}
	else{
		m_sRe = buffer;
		free(buffer);
	}
	return m_sRe;
}


两个结果一致。
有篇博客说用微软的函数路径中间不能加  “.”,测试了一下,我的电脑上的可以的。表示奇怪。
来个真相:


msdn帮助文档自己可以找,有事例代码的。贴过来,需要的可以看看头的注释部分。


// crt_getcwd.c
// This program places the name of the current directory in the 
// buffer array, then displays the name of the current directory 
// on the screen. Passing NULL as the buffer forces getcwd to allocate
// memory for the path, which allows the code to support file paths
// longer than _MAX_PATH, which are supported by NTFS.
 
#include <direct.h>
#include <stdlib.h>
#include <stdio.h>

int main( void )
{
   char* buffer;

   // Get the current working directory: 
   if( (buffer = _getcwd( NULL, 0 )) == NULL )
      perror( "_getcwd error" );
   else
   {
      printf( "%s \nLength: %d\n", buffer, strnlen(buffer) );
      free(buffer);
   }
}



不足之处,多多指教!










                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值