gpt4 book ai didi

c - Ferror 是否会进行多次写入?

转载 作者:太空宇宙 更新时间:2023-11-04 08:08:55 24 4
gpt4 key购买 nike

此示例中的 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);
}

最佳答案

如果发生错误,它不会被重置,除非在您的流上调用 clearerr,所以是的,两次写入中的任何一次发生的错误都会被记录下来。

来自 ferror manual page :

The function ferror() tests the error indicator for the stream pointed to by stream, returning nonzero if it is set. The error indicator can only be reset by the clearerr() function.

但您也可以简单地使用 fprintf 返回代码来查看是否出现问题:

If an output error is encountered, a negative value is returned.

( fprintf manual page )

像这样(感谢 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!");

关于c - Ferror 是否会进行多次写入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40876369/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com