检查C中的fwrite是否成功,perror

Cry*_*tal 10 c fwrite

使用fwrite返回写入文件的成功元素的数量,通过说:

if (!(fwrite(...))) {
    fprintf(stderr, "Failure");
    //perror(???)  I sometimes see code that says perror here and I don't know 
    //exactly what this does.
}
Run Code Online (Sandbox Code Playgroud)

这是否检查成功写入文件?还有其他需要担心的事情吗?

谢谢.

小智 12

总之,不完全.fwrite返回成功写入的元素数; 你需要根据你想写的元素数来检查这一点,即你在fwrite参数中传递的元素.

你做了什么来检查是否写了一些元素.

这是perror的参考.

将全局变量errno的值解释为字符串并将该字符串打印到stderr(标准错误输出流,通常是屏幕),并在其前面使用str中指定的自定义消息.errno是一个整数变量,其值描述了对库函数调用产生的最后一个错误.perror生成的错误字符串取决于开发平台和编译器.如果参数str不是空指针,则打印str,后跟冒号(:)和空格.然后,无论str是否为空指针,都会打印生成的错误描述,后跟换行符('\n').应该在生成错误后立即调用perror,否则可以在调用其他函数时覆盖它.

  • 如果你安排总是用大小为"len"的`1`元素来调用它,那么没有必要将`fwrite`与元素的数量进行比较.然后可能的返回值只是0和1,0表示任何失败,1表示成功. (6认同)