說我用fopen成功打開了一個閱讀文件,但fgets失敗。我希望我的函數適當地設置errno。什麼是fgets失敗時使用的最準確的errno val?
有許多與文件操作相關的errno vals,但沒有一個顯示爲「在閱讀此內容時發生了什麼」。 fgets也不會設置errno。
從已經打開的文件中讀取故障時使用的最接近的errno值是多少?
說我用fopen成功打開了一個閱讀文件,但fgets失敗。我希望我的函數適當地設置errno。什麼是fgets失敗時使用的最準確的errno val?
有許多與文件操作相關的errno vals,但沒有一個顯示爲「在閱讀此內容時發生了什麼」。 fgets也不會設置errno。
從已經打開的文件中讀取故障時使用的最接近的errno值是多少?
儘管C標準本身很少要求設置errno
,假設您使用的是POSIX或類似POSIX的系統,fgets
已經將errno
設置爲適合您的值。請參閱規範fgets
:
其中規定,它可能會因任何爲fgetc
定義的原因:
它的原因這樣做是因爲C和POSIX都指定了所有的在對fgetc
或fputc
的重複呼叫方面,複合stdio功能。
如果你的實現定義了它,你可以使用EIO
。 POSIX將EIO
定義爲「輸入/輸出錯誤」。
爲什麼'fgets()'失敗? – Barmar
'fgets()'失敗的正常原因是因爲你在EOF。這不是一個真正的錯誤,沒有理由設置「errno」。 – Barmar
@Barmar fgets不失敗,但其文檔說明它可以。我的程序中的每一個其他執行路徑都使用errno進行通信,所以我希望在此儘可能接近未來的潛在故障。 – DeepDeadpool