全站数据
8 4 2 0 5 8 1

fwrite和fprintf的区别

爱读会计 | 简单学习,快乐成才!         
问题更新日期:2024-10-15 16:26:57

问题描述

fwrite和fprintf的区别急求答案,帮忙回答下
精选答案
最佳答案

fwrite和fprintf都是C语言中用于文件操作的函数,但有一些区别:

1. 参数类型:fwrite的参数类型是void*,表示要写入的数据的地址;fprintf的参数类型是const char*,表示要写入的格式化字符串。

2. 写入方式:fwrite将二进制数据写入文件,不会进行格式化处理;fprintf将格式化的字符串写入文件,可以指定输出格式。

3. 返回值:fwrite返回写入的元素数量;fprintf返回成功写入的字符数。

4. 写入位置:fwrite写入的位置由文件指针指定,每次写入后文件指针会自动向后移动;fprintf按照文件流的当前位置进行写入,每次写入后文件指针不会移动,下次写入会继续在当前位置写入。

5. 使用场景:fwrite适用于处理二进制文件,如图片、音频等;fprintf适用于处理文本文件,如日志、配置文件等。

总的来说,fwrite适用于处理二进制数据,而fprintf适用于处理文本数据。

其他回答

fwrite是向流中写入数据,而fprintf是向流中写入格式数据。两者的共同点为向流中写入数据,至于区别可以看看两者的申明:

size_tfwrite(

constvoid*buffer,

size_tsize,

size_tcount,

file*stream

);

intfprintf(

file*stream,

constchar*format[,

argument]...

);

前者fwrite写入流stream中的数据是buffer指定的内容,内容的字节大小分别由size和count两个参数来指定,因此写入流stream中的内容有可能是乱码,但是有效的数据。

后者fprintf写入流stream中的数据则由argument来指定,并且这些argument的内容分别由format指定的格式来显示,因此写入stream的内容通常来说是文本字符流,当然,也允许写入格式乱码。

两者都可以将文本写入流stream中。比如:

fwrite("helloworld!",1,12,fp);

与

fprintf(fp,"%s","helloworld!");

等价。