纯C/C++程序中如何获取当前目录和程序目录

时间:2021-10-18 12:05:09
不用Windows库(主要是控制台编程),可以用STL库。

标准C/C++函数最好,如果标准C/C++里没有,请分别给出在Windows和Linux下的方案。

据说chdir可以修改当前目录,但当前目录是在哪里用什么获取呢?

main的第0个参数是命令本身,但是可执行文件的路径是什么呢?

20 个解决方案

#1


long getcwd(char *buf, unsigned long size);

#2


用Qt吧,Windows/Linux/Mac都是一样的函数

#3


chai2010(C/C++/Qt/OpenGL/OpenCV...) 

QT是方便,不过QT要收费。而且为了一个小小的Win32程序,用QT那么庞大的库,不划算吧。 

#4


GetCurrentDirectory

#5


expter(Acm/STL/MFC/Spring) ( ) 信誉:100  2007-9-8 14:29:57  得分: 0  
GetCurrentDirectory 不能在Linux下使用吧。


获取当前路径的问题 akirya(坏[其实偶不是什么所谓的坏人]) 已经解决了,用  
long getcwd(char *buf, unsigned long size);

现在解决剩下那个问题吧……怎么获取程序路径:不用Windows API更不用MFC或者BCB。QT、GTK之类的东西也不用。


  
 


  
 

#6


函数名称:     getcwd
函数原型:     char *getcwd(char *dir,int len)
函数功能:     得到当前路径名称
函数返回:     指向dir的指针
参数说明:     len-路径最大长度.dir-路径字符串.
所属文件:     <dir.h>

#include <stdio.h>
#include <dir.h>
int main()
{
    char buffer[MAXPATH];
    getcwd(buffer, MAXPATH);
    printf("The current directory is: %s", buffer);
    return 0;
}

#7


dir.h

这个头文件可能被命名为 direct.h 或者其他 ...

#8


查看include文件夹下的dir.h

#9


获取当前目录的问题已经解决了。
现在需要获取程序路径啊。就是当前运行的可执行文件的路径啊!

#10


当前工作目录 getcwd

程序目录     GetModuleFileName(NULL, str, sizeof(str))

#11


当前目录: 
getcwd

程序目录: 
win32:GetModuleFileName     
linux:readlink

#12


可执行文件的路径应该是没有标准库的方法得到了。

#13


Linux 下可以用 readlink /proc/self/exe 的方法得到。

#14


getcwd当前目录
GetModuleFileName

#15


是不是忽略了 '.' 呢?当前目录: ".\\yourfilesOryourDir"

#16


.\\ ----------- 应该是这个!!

#17


很好,很好,受教了~~

#18


“当前目录”是个什么概念??

#19


“当前目录”是个什么概念?? 它与 应用程序(exe)所以目录有什么区别呢?

#20


引用 1 楼 akirya 的回复:
long   getcwd(char   *buf,   unsigned   long   size);


此方法不错

#1


long getcwd(char *buf, unsigned long size);

#2


用Qt吧,Windows/Linux/Mac都是一样的函数

#3


chai2010(C/C++/Qt/OpenGL/OpenCV...) 

QT是方便,不过QT要收费。而且为了一个小小的Win32程序,用QT那么庞大的库,不划算吧。 

#4


GetCurrentDirectory

#5


expter(Acm/STL/MFC/Spring) ( ) 信誉:100  2007-9-8 14:29:57  得分: 0  
GetCurrentDirectory 不能在Linux下使用吧。


获取当前路径的问题 akirya(坏[其实偶不是什么所谓的坏人]) 已经解决了,用  
long getcwd(char *buf, unsigned long size);

现在解决剩下那个问题吧……怎么获取程序路径:不用Windows API更不用MFC或者BCB。QT、GTK之类的东西也不用。


  
 


  
 

#6


函数名称:     getcwd
函数原型:     char *getcwd(char *dir,int len)
函数功能:     得到当前路径名称
函数返回:     指向dir的指针
参数说明:     len-路径最大长度.dir-路径字符串.
所属文件:     <dir.h>

#include <stdio.h>
#include <dir.h>
int main()
{
    char buffer[MAXPATH];
    getcwd(buffer, MAXPATH);
    printf("The current directory is: %s", buffer);
    return 0;
}

#7


dir.h

这个头文件可能被命名为 direct.h 或者其他 ...

#8


查看include文件夹下的dir.h

#9


获取当前目录的问题已经解决了。
现在需要获取程序路径啊。就是当前运行的可执行文件的路径啊!

#10


当前工作目录 getcwd

程序目录     GetModuleFileName(NULL, str, sizeof(str))

#11


当前目录: 
getcwd

程序目录: 
win32:GetModuleFileName     
linux:readlink

#12


可执行文件的路径应该是没有标准库的方法得到了。

#13


Linux 下可以用 readlink /proc/self/exe 的方法得到。

#14


getcwd当前目录
GetModuleFileName

#15


是不是忽略了 '.' 呢?当前目录: ".\\yourfilesOryourDir"

#16


.\\ ----------- 应该是这个!!

#17


很好,很好,受教了~~

#18


“当前目录”是个什么概念??

#19


“当前目录”是个什么概念?? 它与 应用程序(exe)所以目录有什么区别呢?

#20


引用 1 楼 akirya 的回复:
long   getcwd(char   *buf,   unsigned   long   size);


此方法不错

#21