c语言获取当前工作路径的实现代码(windows/linux)

自己:
char cFullPath[MAX_PATH] = { 0 };
GetModuleFileNameA(NULL, cFullPath, MAX_PATH);
char *cPos = strrchr(cFullPath, ‘\’);
cFullPath[cPos - cFullPath + 1] = 0;
strcat(cFullPath, “config\del.bat”);

参考:

怎样获得本程序的所在的路径!!!!

https://bbs.csdn.net/topics/10102976

C语言获取当前工作路径

https://blog.csdn.net/u010166404/article/details/46392719?utm_source=blogxgwz2

目前做C语言程序都在windows下进行,目前就windows下获取当前目录的方法进行一个总结。

第一种方法:_getcwd()


   
   
   
   
  1. char* _getcwd( char *buffer, int maxlen );
  2. // 功 能 : 获得当前工作目录.
  3. // 头文件 : #include
  4. // 返回值 : 成功返回指向buffer的pointer
  5. // 失败返回NULL,且设置errno为以下三个值之一:
  6. // ENODEV 无该设备
  7. // ENOMEM 内存不够
  8. // ERANGE 结果超出范围
  9. // 注 意 : 当第一个参数为 NULL 时, 第二个参数 maxlen 长度设置无效,且函数
  10. // 使用 malloc 分配足够内存, 需要将函数返回值传递给 free() 函数来
  11. // 释放内存. 当第一个参数不为 NULL 时,maxlen 指定长度不够函数返回
  12. // 错,设置errno为ERANGE

实例:


   
   
   
   
  1. #include
  2. #include
  3. #define MAXPATH 1024
  4. int main()
  5. {
  6. char buffer[MAXPATH];
  7. _getcwd(buffer,MAXPATH);
  8. printf( "%s",buffer);
  9. return 0;
  10. }
第二种方法:GetCurrentDirectory

Call this member function to get the name of the current directory

BOOL GetCurrentDirectory(
   LPTSTR pstrDirName,
   LPDWORD lpdwLen 
) const;

实例:


   
   
   
   
  1. #include
  2. #include
  3. #include
  4. #pragma comment(lib,"Shlwapi.lib")
  5. int main()
  6. {
  7. TCHAR buffer[MAX_PATH];
  8. GetCurrentDirectory(MAX_PATH,buffer);
  9. //D:\Documents\Visual Studio 2010\Projects\MyCode\Lab1
  10. OutputDebugString(buffer);
  11. return 0;
  12. }


第三种方法:GetModuleFileName()

此函数的说明参考https://msdn.microsoft.com/en-us/library/windows/desktop/ms683197(v=vs.85).aspx

实例:


   
   
   
   
  1. #include
  2. #include
  3. #include
  4. #pragma comment(lib,"Shlwapi.lib")
  5. using namespace std;
  6. int main(int argc, char * argv[])
  7. {
  8. TCHAR buffer[MAX_PATH];
  9. ZeroMemory(buffer,MAX_PATH);
  10. if (GetModuleFileName( NULL,buffer,MAX_PATH))
  11. {
  12. OutputDebugString(buffer);
  13. //path:D:\Documents\Visual Studio 2010\Projects\MyCode\Lab1\Debug\Lab1.exe
  14. PathRemoveFileSpec(buffer);
  15. //D:\Documents\Visual Studio 2010\Projects\MyCode\Lab1\Debug
  16. }
  17. return 0;
  18. }


第四种方法:main()函数参数

main(int argc,char * argv[]),argv[0]代表当前运行程序的路径

实例:


   
   
   
   
  1. #include
  2. #include
  3. #include
  4. #pragma comment(lib,"Shlwapi.lib")
  5. int main(int argc, char * argv[])
  6. {
  7. char *buffer;
  8. puts(argv[ 0]);
  9. //D:\Documents\Visual Studio 2010\Projects\MyCode\Lab1\Debug\lab1.exe
  10. buffer=argv[ 0];
  11. PathRemoveFileSpec(buffer);
  12. puts(buffer);
  13. return 0;
  14. }


你可能感兴趣的:(C/C++)