ferror

ferrorは、指定されたファイルポインタ(ストリーム)でエラーが発生しているかどうかを判定する。

Man page of FERROR
C言語関数辞典 - ferror

読み取り専用でファイルを開いた時に、書き込みをしようとしたらどうなるか。

feofのトピックで"test.txt"を読み取り専用で開いたが、ループの1回目(3バイト読み込めた時とはそういうこと。)でfwriteで"XYZ"を書き込もうとしてみる。
一応、perrorも出してるが、そのあとで、ferrorが真なら、ループを抜けるようになっている。
当然抜けるわけだが。

$ ls
ferror  ferror.c  test.txt
$ cat test.txt
ABCDE
FGHIJ
KLMNO$ vi ferror.c
$ gcc ferror.c -o ferror
$ ./ferror
buf = [ABC], read_len = 3
fread: Success
written_len = 0
fwrite: Bad file descriptor
ferror true!
$

Bad file descriptorで、ferrorが真となり、ループを抜けてる。

Sample/c/ferror/ferror/src/ferror at master · bg1bgst333/Sample · GitHub