2013-04-30 87 views
0

我正在寫一個需要從文件中讀取行的C程序。我目前正在使用fopen()。在C中用fopen讀取文件()

這適用於我的程序。

./myProgram /path/to/file 

但是,我無法閱讀的投入是這樣的:

./myProgram - <<END 
This 
is 
some 
nameless 
file 
END 

所以我猜-是具有2 END的之間的內容無名的文件,但我的程序會給出錯誤與在這種情況下找不到的文件相關,這意味着fopen()返回一個空指針。

我想知道這裏發生了什麼?

+0

'fopen'嘗試打開名稱爲「-'的文件,但沒有找到它,據推測。解析選項,如果文件名是'-',則從'stdin'中讀取。 – 2013-04-30 00:14:07

+0

@DanielFischer是的,我終於明白了!我會接受你的答案,如果你把它張貼在下面:) – Enzo 2013-04-30 03:58:05

回答

0

你是對的。根據fopenman,fopen需要打開文件const char*。如果您只是將您的argv傳遞給fopen,那麼「這是一些無名文件」不是文件路徑,因此fopen將無法​​找到您的文件。

如果你想從標準輸入讀取,你可以使用fgets或任何其他閱讀功能,需要一個FILE *stream的說法,對此您可以通過stdin文件流。

+0

感謝您的幫助!我想通過fopen()來做到這一點。 – Enzo 2013-04-30 03:58:27

+0

哦?你是怎麼做到的? – 2013-04-30 04:04:57

+1

我只是將'FILE'指針設置爲'stdin'並從那裏讀取:) – Enzo 2013-04-30 04:10:24