Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 将数据buf写入文件的最佳方式是什么_C_File Io - Fatal编程技术网

C 将数据buf写入文件的最佳方式是什么

C 将数据buf写入文件的最佳方式是什么,c,file-io,C,File Io,将数据buf写入文件的最佳方式是什么 char buf[1024]; FILE *fp = fopen("test", "a+"); fwrite(buf,1024,fp) fwrite(buf,1024,1,fp) for(i=0;i

将数据buf写入文件的最佳方式是什么

char buf[1024];
FILE *fp = fopen("test", "a+");
  • fwrite(buf,1024,fp)
  • fwrite(buf,1024,1,fp)
  • for(i=0;i<1024;i++)fwrite(buf,1,1,fp)
  • 还是其他更高性能的方式
    1和2将是相同的。。。 但是,我会做1,但是喜欢:-

    fwrite(buf, sizeof(char), 1024, fp);
    

    1和2将是相同的。。。 但是,我会做1,但是喜欢:-

    fwrite(buf, sizeof(char), 1024, fp);
    

    循环缓慢;可能很慢。很可能,在循环体中使用
    putc()
    比使用
    fwrite()
    做得更好

    前两个选项之间的差异是返回值。第一个输出1024个单字节,如果完全成功,则返回1024个,如果失败,则返回较小的数字。第二个输出1024字节的单个单位;如果全部写入,则返回1;如果全部写入失败,则返回0。这是否重要取决于你在写短文时可能会做什么。除了返回值之外,这两个值是等效的


    至少在您坚持使用文件流时,没有其他更高性能的方法。切换到文件描述符会打开更多的选项,但是对数据进行一次
    写入
    调用可能是最好的选择;可能很慢。很可能,在循环体中使用
    putc()
    比使用
    fwrite()
    做得更好

    前两个选项之间的差异是返回值。第一个输出1024个单字节,如果完全成功,则返回1024个,如果失败,则返回较小的数字。第二个输出1024字节的单个单位;如果全部写入,则返回1;如果全部写入失败,则返回0。这是否重要取决于你在写短文时可能会做什么。除了返回值之外,这两个值是等效的


    至少在您坚持使用文件流时,没有其他更高性能的方法。切换到文件描述符会打开更多的选项,但是对数据的单个
    写入
    调用可能会得到最好的结果。

    sizeof(char)
    始终为1,因此为了简洁起见,只需使用1。一个和两个返回值不同。
    sizeof(char)
    始终为1,为了简洁起见,只需使用1。1和2的返回值不同。我的意思是“最高性能”,我的意思是“最高性能”