此示例中的ferror
是否检查fprintf
是否有错误,或仅检查第二个?
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);
}
答案 0 :(得分:2)
如果发生错误,除非在您的流上调用clearerr
,否则不会重置错误,所以是的,会记录两次写入中发生的错误。
函数ferror()测试stream指向的流的错误指示符,如果设置则返回非零值。错误指示器只能通过clearerr()函数重置。
但您也可以使用fprintf
返回代码查看是否出现问题:
如果遇到输出错误,则返回负值。
喜欢这个(感谢Jonathan指出原帖中的错误):
if (fprintf(myout, "First print %s\n", str1)<0) fprintf(stderr, "Error printing to file #1!");
if (fprintf(myout, "Second print %s\n", str1)<0) fprintf(stderr, "Error printing to file #2!");