2015-11-21 56 views
0

因此,我寫了一個簡單的程序C,它打開一個名爲prog6_input.txt的文件,並生成另一個文件,名爲prog_output.txt。但是,下面的代碼完美適用於Windows,但在Mac上編譯時會失敗。 (我也認爲這是有同樣的問題與創建該文件也一樣)在C Issue中打開和創建文件?

FILE *ptr_file = fopen("prog6_input.txt", "r"); 

// We Don't have a input file 
if(!ptr_file) { 
    perror("Error Reading Input file.\n"); 
    return 1; 
} 

對於PERROR:No Such file or directory

的文件,如下面的截圖看到,在同一目錄下。這適用於Windows,但不適用於Mac OSX?這是爲什麼,我將如何解決它?

更新:爲了vompile我使用make main在目錄中使用終端。

enter image description here

+0

你如何運行你的程序? – vsoftco

+0

嘗試打開文件後,「errno」會被設置爲什麼?此外,你是什麼意思的「爲了perror:沒有這樣的文件或目錄」?另外,你是從你的** Prog6 **目錄運行'main'程序嗎? – fvgs

+0

要運行我的程序,我雙擊主(ecex)文件。爲了澄清,這是什麼perror打印出來。沒有文件或目錄。 @hexturtle –

回答

4

你應該打開一個終端,cdProg6目錄,並運行./main您的可執行文件。

+0

哇,爲什麼雙擊它創建或期望文件在我的主目錄中,而不是執行代碼的當前目錄? –

+1

通過雙擊運行該程序時,不能保證當前工作目錄將設置爲可執行文件所在的目錄。正如你所觀察到的,它可能被設置爲你的主目錄或可能的其他目錄。也就是說,該機器不會假設您將用於I/O的文件的位置,例如prog6_input.txt。相反,假設您的文件(例如prog6_input.txt)位於正在運行程序的目錄中,您就是這樣的人。這就是爲什麼它沒有找到該文件。 – fvgs

+0

非常感謝你。謝謝! –