C- ferror携带多个写作



在此示例中的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!");

相关内容

  • 没有找到相关文章

最新更新