Clion中C++使用當前目錄讀取檔案失敗

charlsonzhao發表於2018-08-03

問題

在使用 Clion編譯執行C++時,程式從檔案中讀取輸入資料,使用 freopen 重定向輸入,一直沒有讀取到資料,execute.txt 檔案放在cpp檔案同級目錄下:

freopen("./execute.txt", "r", stdin);

原因:

在Clion中,cpp原始檔經編譯後生成可執行檔案,放在 cmake-build-debug 目錄下,也就是最終的執行目錄,所以檔案相對路徑應該是 ../

解決辦法:

1.使用絕對路徑

使用檔案絕對路徑,讀取檔案一般不會出問題,例如

freopen("/Users/usr/workspace/ClionProjects/untitled/execute.txt", "r", stdin);

2.使用相對路徑

使用相對路徑的話,就是要確定待讀取檔案目錄和編譯之後生成的可執行檔案目錄。

如果把待讀取檔案放到 cmake-build-debug 目錄,直接執行

freopen("./execute.txt", "r", stdin);

如果把待讀取檔案放在cpp檔案同級目錄下,則程式執行時需要在父級目錄找待讀取檔案

freopen("../execute.txt", "r", stdin);

相關文章