获取程序路径并去除程序名

来源:互联网 发布:it unbelievable 编辑:程序博客网 时间:2024/06/17 03:29

问题1:如何确定应用程序的路径?

问题2:如何去除程序目录中最后的文件名?(如去除c:\Debug\test.exe中的\test.exe,值留下c:\Debug)


1.使用GetModuleFileName 获得应用程序的路径,然后去掉可执行件名。
Example: 

TCHAR exeFullPath[MAX_PATH]; // MAX_PATH 在 API 中定义了吧,好象是 128GetModuleFileName(NULL,exeFullPath,MAX_PATH)

2.先定位到字符串的结束标志‘\0’,再循环从后往前找‘\\’,

一旦找到替换当前位置的字符为‘\0’跳出循环。


例子:

#include <windows.h>#include <iostream>using namespace std;bool CutLastFileName(char* szPath)//去除最后的文件名{size_t len = strlen(szPath);for (int i = len; i >= 0; i--){if(szPath[i]=='\\'){szPath[i]='\0';return true;}}return false;}void main (){char szPath[MAX_PATH];if( !GetModuleFileName( NULL, szPath, MAX_PATH ) )//获取程序运行目录(全路径)/*如果此处编译提示:不能将参数 2 从“char [260]”转换为“LPWSTR”请将项目属性设为:使用多字节字符集*/{printf("GetModuleFileName failed (%d)\n", GetLastError());return;}CutLastFileName(szPath);cout << szPath << endl;}