在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/C  網(wǎng)絡(luò)安全/ 通過環(huán)境變量調(diào)用程序的情況下,如何用相對路徑打開文件?

通過環(huán)境變量調(diào)用程序的情況下,如何用相對路徑打開文件?

在C語言中,我用fopen()函數(shù)能通過相對路徑打開文件
比如

//假設(shè)我當(dāng)前目錄有個(gè)文件叫 1.txt

FILE *fp = fopen("1.txt","r");

if( fp != NULL ){
    //一番操作...
}else{
    //報(bào)錯(cuò)
}

fclose(fp);

然后我在設(shè)置了環(huán)境變量的path后,把這個(gè)程序編譯好,連同這個(gè)1.txt都放到那個(gè)設(shè)置好的路徑下。

這時(shí)候,我在命令行終端的任何地方輸入這個(gè)可執(zhí)行程序的名字都能運(yùn)行它了,可是它并不能正確的打開通過相對路徑形式定義的這個(gè)文件。

所以,請問要通過怎樣的方式才能達(dá)到這個(gè)目的(通過相對路徑形式打開文件,并且能在通過設(shè)置環(huán)境變量后在任何地方通過相對路徑形式打開文件)呢?

回答
編輯回答
菊外人

不知道你是什么操作系統(tǒng)

如果是 BSD 的話,realpath 應(yīng)該可以滿足需求的;
如果是 Linux 的話,可以使用全局變量 extern char *program_invocation_name 來獲??;當(dāng)然也可以讀取 /proc/[pid]/exe 的鏈接指向來獲取

2017年11月28日 11:50
編輯回答
乞許

在windows下用 GetModuleFileName 可以獲得程序的絕對路徑。

搜索PATH環(huán)境變量找可執(zhí)行程序是shell和系統(tǒng)幫你干的,但是非可執(zhí)行文件呢,沒人幫你干這個(gè)活兒,你得自己來。
所以剩下的就是,要么你拼接出文件的絕對路徑,要么你自己獲取PATH然后自己挨個(gè)兒搜索。比較下,你肯定拼接路徑吧。

2018年8月14日 06:30