我想通過調用tmpfnam
函數來獲取臨時文件名並使用它創建寫入文件,但我的C++程序中創建了一個臨時文件代碼無法創建臨時文件。然而,當我使用用戶提供的文件名或字符串常量而不是使用來自tmpfnam
的臨時名稱時,文件創建工作得非常好。這裏有一個例子:無法在Windows上用C++創建臨時文件使用tmpfnam
std::tmpnam(fname); //does not work
std::fstream f(fname,std::ios::out);
char* fname = "myfile.txt"; //works
std::fstream f(fname,std::ios::out);
我查了一下,在殼體2中的文件在同一目錄下的源文件被創建,但不是在情況1.我試圖運行在管理員權限的程序,以及仍然沒有運氣 。任何想法爲何如此?
你傳遞給'tmpnam'的是什麼?足夠大嗎? – cnicutar 2012-07-24 20:02:24
我覺得你能夠寫入與可執行文件相同的目錄是令人驚訝的。可執行文件不得位於受保護的位置。 – 2012-07-24 20:02:50
@cnicutar'fname'被聲明爲大小'L_tmpnam',所以它應該可以正常工作。 – adi 2012-07-24 20:09:47