我寫了一下C99代碼從標準輸入讀取:發現錯誤,標準錯誤
// [...]
fgets(buf, sizeof(buf), stdin);
// [...]
但我知道如果我要趕在此情況下的錯誤,因爲外殼可以重定向stdin
任何東西這可能不如普通的stdin
。但這也意味着,必須檢查stdin
,stdout
和stderr
上的每個訪問是否有錯誤,並且我很少看到printf
和CO之後的任何檢查。
那麼,是否建議檢查每個流訪問錯誤?然後
上面的例子會是這樣的:
// [...]
if (!fgets(buf, sizeof(buf), stdin) && ferror(stdin)) {
exit(EXIT_FAILURE);
}
// [...]
提前感謝!
謝謝,我從來沒有聽說過syslog。很高興知道。但關於EOF:有時,我有一個預先初始化的緩衝區,不在乎它是否沒有改變,但是你是對的,我應該始終關心返回值。 – user1678062