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

fwrite和fprintf这两个函数在写入时有什么区别?

fwrite是按二进制写数据到文件,而fprintf是严格按照参数里边的格式控制符,写数据到文件。可以是十进制,二进制,字符串,等等,而且可以直接打开文件查看数据,二进制文件是不能直接打开文件查看数据的。追问

1 有人说 如果用fprintf写入 1 是吧1的ACII转化成二进制 然后放入文件

如果用fwrite写入 1 是把1的二进制放入文件
是这样的吗?
2 还有 为什么用fwrite写入的不能打开文件查看呢?
感谢

追答

fprintf是按参数里边的格式控制符写数据到文件的,如果写1的话,那格式控制符就是%d,直接写的应该是ascii码,不是二进制。
fwrite是转将1转化成二进制写进文件。
二进制文件不能直接查看的原因是因为里面所有的东西都是由二进制串表示的,你看了也看不懂,也不是说就不能打开。

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-09-18
一、作用区别:
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:返回值是输出的字符数,发生错误时返回一个负值。
第2个回答  2014-07-15
fprintf(fp, "%d", buffer); 是将格式化的数据写入文件
fprintf(文件指针,格式字符串,输出表列);
fwrite(&buffer, sizeof(int), 1, fp);是以二进位方式写入文件
fwrite(数据,数据类型大小(字节数),写入数据的最大数量,文件指针);
http://blog.csdn.net/godenlove007/article/details/7721647追问

什么叫格式化的数据?、

追答

%d知道是啥意思吗?

第3个回答  2015-02-05
当使用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。
相似回答