先直接上代碼,比較直觀:
char szModuleFilePath[MAX_PATH];
char SaveResult[MAX_PATH];
int n = GetModuleFileNameA(0, szModuleFilePath, MAX_PATH); //獲得當前執行文件的路徑
szModuleFilePath[ strrchr(szModuleFilePath, '\\') - szModuleFilePath + 1 ] = 0;//將最後一個"\\"後的字符置爲0
strcpy(SaveResult,szModuleFilePath);
strcat(SaveResult,"\\OutMessage\\outMessagebyJam.txt");//在當前路徑後添加子路徑
獲取當前執行文件的路徑用GetModuleFileNameA()這個函數就可以了,它獲取當前進程已加載模塊的文件的完整路徑,該模塊必須由當前進程加載。路徑形式如 "F:\users\administrator\documents\visual studio 2013\可用工程\TrafficTest_org\TrafficClassCreate\Release\TrafficClassCreate.exe",若想要獲取另一個已加載模塊的文件路徑,可以使用GetModuleFileNameEx函數。
GetModuleFileNameA()函數接口:
DWORD WINAPI GetModuleFileName(
_In_opt_ HMODULE hModule,
_Out_ LPTSTR lpFilename,//返回的路徑名
_In_ DWORD nSize
);
strrchr()這個函數,查找指定字符串中從正面開始的最後一次出現的位置,如果成功,返回指定字符最後一次出現位置的地址,如果失敗,則返回 NULL。