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。

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

C语言二进制文件的读取问题
C语言中二进制文件的读取要用fread和fwrite来实现。fwrite()与fprintf()是不同的。fwrite将写入的数据作为文件的磁盘内容保存。fprintf将写入的数据的每个字符所对应的ASCII码作为文件的磁盘内容保存。fprintf做了一个转换的工作。当打开文件时,记事本会自动把文件的磁盘内容作为ASCII码转换成对应的字符,然...

关于fwrite与fprintf的区别
fwrite写的是二进制内容,fprintf写的是数字转换成ASCII码之后的字符。两者都把数字64写入一个文件,用记事本打开看下,fwrite写的打开是乱码,fprintf写入的是6和4这两个字符。因为fwrite写的是64的二进制表示(4个字节,前面全是0,最后八位是0100000),fprintf写入的实际内容是36H和34H(16进制表示...

C语言中fread,fwrite和fscanf,fprintf的区别,什么是格式化数据
fread:是读取数据 fwrite:是写入数据 1.函数功能 用来读写一个数据块。2.一般调用形式 fread(buffer,size,count,fp);fwrite(buffer,size,count,fp);3.说明 (1)buffer:是一个指针,对fread来说,它是读入数据的存放地址。对fwrite来说,是要输出数据的地址。(2)size:要读写的字节数;(3...

fwrite写二进制文件的速度
fwrite是向流中写入数据,而fprintf是向流中写入格式数据。两者的共同点为向流中写入数据,至于区别可以看看两者的申明:size_tfwrite(constvoid*buffer,size_tsize,size_tcount,file*stream );intfprintf(file*stream,constchar*format[,argument]...);前者fwrite写入流stream中的数据是buffer指定的内容...

...用fwrite写出来的是乱码,用fprintf写的不完整而且也是乱码,用fputs编...
fwrite是写入二进制。 右边的乱码是文本编辑器按照asscll码来显示的。你如果需要写成可视化文本。需要对函数改造,可以逐个字节读取,并按照整形数fprintf进文件就可以了。例如 rBuf 中分别是C4 4F 38 37 B6 18 58 unsigned char* p = (unsigned char*)rBuf;fprintf("%d ", *p++); \/\/ 用循环...

c语言 ,fread,fwrite和fscanf,fprint不知格式化方式和二进制方式的区别...
fwrite和fprintf都是写函数。原理类似 以fread和fscanf对比举例 fread是不管文件中什么内容,直接读到内存中, 不考虑格式。而fscanf在读的时候, 第一步要做的 和fread相同,先读取字符到内存中,然后要解析格式字符串,根据格式字符串,去判断读到的字符,和格式字符串是否相符,如果相符,再转换成对应...

fread,fwrite和fscanf,fprintf有什么不同?
因此你的txt文件,里面是英文段落,这里面只有字符,而没有像其他形式如图形,那么你的txt就是一个文本文件。fread,fwrite是对二进制文件进行读写的函数,而fscanf,fprintf是从磁盘文件中读写(可以是二进制,也可以是其他形式的文件)以上是我的建议,希望对你有所帮助 ...

fread和fprintf,fwrite和fscanf的区别是什么?
fread fwrite fprintf fscanf fopen 这些都是带缓存的文件操作函数 fopen 打开文件,返回文件指针 对应的函数是 fclose(); 关闭文件指针 fread 是读取文件内容到数据缓冲区---指针(支持二进制数据) 对应的函数是 fwrite :将数据缓冲区的数据写到文件中去。fscanf 格式化读文件内容到相应的数据指针中去(只...

c语言操作文本的基本使用方法
fwrite(buffer,size,count,fp);4.格式化读写 fscanf函数,fprintf函数与前面使用的scanf和printf函数的功能相似,都是格式化读写函数。两者的区别在于fscanf函数和fprintf函数的读写对象不是键盘和显示器,而是磁盘文件。这两个函数的调用格式为:fscanf(文件指针,格式字符串,输入表列);fprintf(文件指针,格式...

相似回答