C语言 fwrite()和fprintf()的区别

fwrite和fprintf这两个函数在写入时有什么区别?... fwrite和fprintf这两个函数在写入时有什么区别? 展开
 我来答
与子如初见
推荐于2017-09-19 · TA获得超过1638个赞
知道小有建树答主
回答量:1117
采纳率:100%
帮助的人:798万
展开全部
fwrite是按二进制写数据到文件,而fprintf是严格按照参数里边的格式控制符,写数据到文件。可以是十进制,二进制,字符串,等等,而且可以直接打开文件查看数据,二进制文件是不能直接打开文件查看数据的。
追问
1  有人说 如果用fprintf写入 1  是吧1的ACII转化成二进制 然后放入文件

如果用fwrite写入 1 是把1的二进制放入文件
是这样的吗?
2 还有 为什么用fwrite写入的不能打开文件查看呢?
感谢
追答
fprintf是按参数里边的格式控制符写数据到文件的,如果写1的话,那格式控制符就是%d,直接写的应该是ascii码,不是二进制。
fwrite是转将1转化成二进制写进文件。
二进制文件不能直接查看的原因是因为里面所有的东西都是由二进制串表示的,你看了也看不懂,也不是说就不能打开。
lyz810
推荐于2017-09-18 · 知道合伙人互联网行家
lyz810
知道合伙人互联网行家
采纳数:7531 获赞数:31778
前端开发工程师

向TA提问 私信TA
展开全部
一、作用区别:
fwrite是C语言函数,指向文件写入一个数据块。
fprintf是C/C++中的一个格式化写—库函数;其作用是格式化输出到一个流/文件中;
二、函数原型区别:
fwrite:size_t fwrite(const void* buffer, size_t size, size_t count, FILE* stream);
fprintf:int fprintf (FILE* stream, const char*format, [argument]);
三、返回值区别:
fwrite:返回实际写入的数据项个数。
fprintf:返回值是输出的字符数,发生错误时返回一个负值。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
NoYourCase
2014-07-15 · 超过63用户采纳过TA的回答
知道小有建树答主
回答量:255
采纳率:0%
帮助的人:146万
展开全部
fprintf(fp, "%d", buffer); 是将格式化的数据写入文件
fprintf(文件指针,格式字符串,输出表列);
fwrite(&buffer, sizeof(int), 1, fp);是以二进位方式写入文件
fwrite(数据,数据类型大小(字节数),写入数据的最大数量,文件指针);
http://blog.csdn.net/godenlove007/article/details/7721647
追问
什么叫格式化的数据?、
追答
%d知道是啥意思吗?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
秀乞群群
2015-02-05 · TA获得超过19万个赞
知道顶级答主
回答量:6.7万
采纳率:91%
帮助的人:2.4亿
展开全部
当使用fwrite将一个int型数字65写入文本文件时,由于65对应的二进制数是1000001,十六进制数是0x41,存储的是以二进制的形式1000001.在notepad++中使用十六进制方式打开显示的是:0x0041,转换为十进制则为65,使用记事本打开这个文本文件后显示的是A,因为记事本程序默认为存储在文本文件中的数据都是ASCII码形式存储,它把65当做ASCII码翻译为字符A。
当使用fpintf将一个int型数字65写入文本文件时,将65每一位转换为ASCII码存储,6、5分别对应ASCII码54、53,存储的是ASCII码54、53.在notepad++中使用十六进制方式打开显示的是:3635,转换为十进制则为54、53,这正是数字6、5的ASCII码。
使用记事本打开这个文本文件时,记事本将存储在其中的54、53当做ASCII码翻译为字符6、5显示,我们看到的是便是字符65。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式