-4
我正在製作一個遊戲,從外部文件(.txt文件)加載它的數據。當我聲明和定義*fp
到fopen()
函數,給它的文件的目錄,它當然工作得很好。 但問題在於:當我想將我的程序發送到另一臺計算機或目錄時,目錄發生更改,因此遊戲無法從文件加載其數據。 我需要一種方法讓程序搜索所有文件的名稱並打開它們,無論程序文件夾在哪裏。C - 如何製作一個程序來查找它必須訪問的文件的名稱?
我正在製作一個遊戲,從外部文件(.txt文件)加載它的數據。當我聲明和定義*fp
到fopen()
函數,給它的文件的目錄,它當然工作得很好。 但問題在於:當我想將我的程序發送到另一臺計算機或目錄時,目錄發生更改,因此遊戲無法從文件加載其數據。 我需要一種方法讓程序搜索所有文件的名稱並打開它們,無論程序文件夾在哪裏。C - 如何製作一個程序來查找它必須訪問的文件的名稱?
這是操作系統特定的。在Linux上,你可以使用locate
shell命令和解析它的輸出(http://www.linfo.org/locate.html)
C: Run a System Command and Get Output?
How do I execute a Shell built-in command with a C function?
然而,這種解決方案只能在Linux上運行。我認爲yano在上述評論中的解決方案是更好的...
聽起來像最簡單的解決方案是簡單地分發必要的文件以及您的可執行文件。使用該層次結構中的所有支持文件對頂級目錄進行壓縮/縮放,或者讓用戶/安裝腳本定義某種指向文件的環境變量。沒有程序會在文件系統中搜索他們需要的文件。他們知道它們在哪裏。 – yano
C99標準不知道目錄。但是POSIX呢。你的問題是操作系統特定的。您可能需要[readdir(3)](http://man7.org/linux/man-pages/man3/readdir.3.html),[nftw(3)](http://man7.org/linux/ man-pages/man3/nftw.3.html),[stat(2)](http://man7.org/linux/man-pages/man2/stat.2.html) –
你所描述的需要知道的是目標操作系統上的軟件安裝標準。從一個操作系統到另一個操作系統差別很大 –