在什么情况下,函数fwrite将错误指示符放到流上,这样ferror将返回true?
具体来说,我想知道如果没有成功写入所有字节,它是否会出错.
请提供您从何处获取信息的链接.
谢谢
如果发生任何错误,将设置流的错误指示符,并且clearerr在调用之前不会清除.但是,由于缓冲,stdio函数很难报告错误.通常直到稍后的调用才会看到错误,因为缓冲数据永远不会失败,但缓冲区已满后的后续写入可能会失败.如果你使用stdio来编写文件,我知道的唯一可靠的方法就是(选择一个):
setbuf或setvbuf- 这必须是在打开之后执行的第一个操作,FILE否则它具有UB)fflush并假设之后的任何数据可能只是部分写入另请注意,在POSIX系统上,如果发生错误,则fwrite需要设置(和其他stdio函数)errno以指示错误类型.就普通C而言,这些功能可能会设置errno,也可能不会.