1、通过用_splitpath函数对argv[0]参数进行分割,然后自行拼接组装字符串,想要哪个可以将其以参数传出。
int deal_for_work_path(char *full_path)
{
char path_buffer[_MAX_PATH];
char drive[_MAX_DRIVE];
char dir[_MAX_DIR];
char fname[_MAX_FNAME];
char ext[_MAX_EXT];
_splitpath(full_path, drive, dir, fname, ext);
return 0;
}
2、使用GetModuleFileName(NULL, work_path, _MAX_PATH)得到程序模块.exe全路径
需要#include <windows.h>
char work_path[_MAX_PATH] = {0};
GetModuleFileName(NULL, work_path, _MAX_PATH); //得到程序模块.exe全路径
*(strrchr( work_path, '\\') + 1) = 0; //去掉程序文件名
不得不说这个时候strrchr函数发挥了很大的作用。
也可以这样去除程序文件名
strrchr( work_path, '\\')[1]= 0;
如果不需要路径最后的反斜杠'\'
可以这样:
*strrchr( exeFullPath, '\\') = 0;
strrchr( exeFullPath, '\\')[0] = 0;
注:若为Linux环境argv[0]则为程序名,get_pwd()函数可获取程序文件路径。