教你如何獲得可執行程式的執行目錄、可執行程式名、可執行程式字尾(C\C++)
阿新 • • 發佈:2019-01-08
很多童鞋可能遇見過這個問題。下面給大家講講哈,希望各位有用。
首先,我們應該明白main函式的引數是什麼意思。
int main(int argc, char **argv);
第一個引數說的是,argv中有多少個字串。第二個引數存放的是一些字串,這些字串是系統給出的。其中argc一般情況下會大於等於1 。
如果你不是在命令列中啟動的程式,那麼通常argc=1 ,並且argv[0]就是可執行程式的全名(包含路徑和檔名),例如:C:\test.exe
如果你在命令列啟動,那你肯定就明白argv裡面存放的是什麼了,呵呵。例如你在命令列中輸入:{"D:\test.exe" 01.jpg}(你輸入的是大括號內的字串),那麼
argv={"D:\test.exe", "01.jpg"};
2、使用argv這個引數獲得可執行程式的執行路徑等資訊:
直接貼程式。
#include <stdio.h> #include <Windows.h> #include <string.h> int main(int argc, char *argv[]) { char drive[4]; char subdir[MAX_PATH]; char fn[MAX_PATH]; char exten[MAX_PATH]; char exe_path[MAX_PATH]; _splitpath(argv[0], drive, subdir, fn, exten); printf("Full file name = %s\n", argv[0]); printf("Drive=%s\nSubdir=%s\nfilename=%s\nExtension=%s\n\n",\ strlen(drive)==0? "null":drive, \ strlen(subdir)==0? "null":subdir,fn,exten); sprintf(exe_path, "%s%s", drive, subdir); if (strlen(exe_path)==0) { sprintf(exe_path, ".\\"); } printf("strlen(exe_path)=%d\n", strlen(exe_path)); printf("exe_path=%s\n", exe_path); // Can we use the path? now test it as followed. sprintf(fn, "%stest.log", exe_path); FILE *fs = fopen(fn, "w+"); fprintf(fs, "%s\n", fn); fclose(fs); getchar(); return 0; }
各位童鞋把程式那會去編譯執行下把。
歡迎大家批評指正啊。看完評論下把。讓我有點成就感,多多分享啊。。