在此示例中的ferror
检查检查两个fprintf
s是否错误,还是第二个?
FILE * myout;
if ((myout = fopen("Assignment 11.txt", "a")) != NULL)
{
fprintf(myout, "First print ", str1);
fprintf(myout, "Second print", str1);
if (ferror(myout))
fprintf(stderr, "Error printing to file!");
fclose(myout);
}
如果发生错误,则不会重置它,除非在您的流上调用 clearerr
,否则是,是的,记录了两个写入的错误。
来自Ferror手册页:
函数ferror()测试了通过流指向流的流的错误指示器,如果设置了该流,则返回非零。误差指示器只能通过clearerr()函数重置。
,您也可以简单地使用fprintf
返回代码来查看是否出了点问题:
如果遇到输出错误,则返回负值。
(fprintf手册页)
这样(感谢Jonathan指出了原始帖子中的错误):
if (fprintf(myout, "First print %sn", str1)<0) fprintf(stderr, "Error printing to file #1!");
if (fprintf(myout, "Second print %sn", str1)<0) fprintf(stderr, "Error printing to file #2!");