Dan*_*Dan 3 c c++ error-handling recovery fread
如果对fread()的调用返回0并且ferror()指示错误(相对于EOF),是否可以重试读取或是否更好地关闭并重新打开文件?
我无法完全重新开始 - 输入文件已被部分处理,无法撤消(比如我一次写出一个块到套接字,并且由于现有协议,没有办法告诉远程端,"没关系,我需要重新开始").
我可以fclose()和fopen()文件,fseek()超过已经处理过的数据,并从那里继续fread() - 但这是必要的吗?
没有"一刀切"的解决方案,因为不同的错误可能需要不同的处理.错误fread()是不寻常的; 如果你正确地调用它,错误可能表示一种情况已经离开了FILE*一个奇怪的错误状态.在这种情况下,你最好调用fclose(),fopen(),fseek()把事情早在良好的状态.
如果您正在为正在发生的事情编写代码,请提及您从中获得的实际错误ferror()...