我试图了解何时clearerr()应使用stdio函数。
例如,如果我fread()或fwrite()某人有效FILE*并且得到了一个短计数并且ferror为真,我该怎么办?
从我至今读,fread()并且fwrite()功能强大且将阻止和/或重试(如果有锁和/或可能在较低水平的功能发生中断),因而似乎永远不会任何点使用clearerr(),因为fread或fwrite错误会被如此灾难性的,试图恢复毫无意义。
此外,ferror()仅告诉我有错误,而不是错误。
#define SZ 1024
FILE* fp = fopen( "foo", "r" );
if ( fp ) {
char b[SZ];
int ch_count = fread( b, sizeof(char), SZ, fp );
if ( ch_count != SZ && ferror( fp ) ) {
// how would clearerr() be used. I don't know?
// ....
// should I drop through here …Run Code Online (Sandbox Code Playgroud) c ×1