2017-10-13 86 views
1

說我用fopen成功打開了一個閱讀文件,但fgets失敗。我希望我的函數適當地設置errno。什麼是fgets失敗時使用的最準確的errno val?

有許多與文件操作相關的errno vals,但沒有一個顯示爲「在閱讀此內容時發生了什麼」。 fgets也不會設置errno。

從已經打開的文件中讀取故障時使用的最接近的errno值是多少?

+0

爲什麼'fgets()'失敗? – Barmar

+1

'fgets()'失敗的正常原因是因爲你在EOF。這不是一個真正的錯誤,沒有理由設置「errno」。 – Barmar

+0

@Barmar fgets不失敗,但其文檔說明它可以。我的程序中的每一個其他執行路徑都使用errno進行通信,所以我希望在此儘可能接近未來的潛在故障。 – DeepDeadpool

回答

1

儘管C標準本身很少要求設置errno,假設您使用的是POSIX或類似POSIX的系統,fgets已經將errno設置爲適合您的值。請參閱規範fgets

其中規定,它可能會因任何爲fgetc定義的原因:

它的原因這樣做是因爲C和POSIX都指定了所有的在對fgetcfputc的重複呼叫方面,複合stdio功能。

2

如果你的實現定義了它,你可以使用EIOPOSIXEIO定義爲「輸入/輸出錯誤」。

相關問題