fwrite和fprintf,fread和fprintf,fwrite和fscanf的区别是什么?
fwrite和fprintf,fread和fprintf,fwrite和fscanf的区别是什么?详细介绍
本文目录一览: C语言 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!");
等价。
C语言 fwrite()和fprintf()的区别
一、作用区别:
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:返回值是输出的字符数,发生错误时返回一个负值。
fprintf(fp, "%d", buffer); 是将格式化的数据写入文件
fprintf(文件指针,格式字符串,输出表列);
fwrite(&buffer, sizeof(int), 1, fp);是以二进位方式写入文件
fwrite(数据,数据类型大小(字节数),写入数据的最大数量,文件指针);
http://blog.csdn.net/godenlove007/article/details/7721647
fwrite是按二进制写数据到文件,而fprintf是严格按照参数里边的格式控制符,写数据到文件。可以是十进制,二进制,字符串,等等,而且可以直接打开文件查看数据,二进制文件是不能直接打开文件查看数据的。
关于fwrite与fprintf的区别
首先
第一个
因为fprintf写入文件的时候是有格式化控制符列表的
而是用
fscanf是可以利用这个格式化控制列表读取数据的
当然你也可以使用fgets
和
fgetc
读取,
这都是没有问题的。
文本方式写入的意思应该是数据里边只有文字(包括数字字符串之类)的意思吧,这个是我的理解。
fwrite写的是二进制内容,fprintf写的是数字转换成ASCII码之后的字符。两者都把数字64写入一个文件,用记事本打开看下,fwrite写的打开是乱码,fprintf写入的是6和4这两个字符。因为fwrite写的是64的二进制表示(4个字节,前面全是0,最后八位是0100000),fprintf写入的实际内容是36H和34H(16进制表示的字符6和字符4的ASCII编码)
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)count:要进行读写多少个size字节的数据项;
(4)fp:文件型指针。
注意:1 完成次写操(fwrite())作后必须关闭流(fclose());
2 完成一次读操作(fread())后,如果没有关闭流(fclose()),则指针(FILE * fp)自动向后移动前一次读写的长度,不关闭流继续下一次读操作则接着上次的输出继续输出;
3 fprintf() : 按格式输入到流,其原型是int fprintf(FILE *stream, const char *format[, argument, ...]);其用法和printf()相同,不过不是写到控制台,而是写到流罢了。注意的是返回值为此次操作写入到文件的字节数。如int c = fprintf(fp, "%s %s %d %f", str1,str2, a, b) ;str1:10字节;str2: 10字节;a:2字节;b:8字节,c为33,因为写入时不同的数据间自动加入一个空格。
4.fscanf 和 scanf 相似 :当能正常读入数据时, fscanf 返回读入数据的个数,否则返回 EOF 。
fprintf函数输入时是否会覆盖文件中原有内容?全部还是部分? 那fwrite呢?
是否覆盖要看你fopen时是采用什么方式的
fopen(file , "r") ; 读方式打开,写会报错!
fopen(file , "w") ; 写方式打开,整个文件会被直接重新写,以前文件的数据全丢失。
fopen( file , "a" ); 追加方式打开,写入数据时,是追加到文件尾,不会影响原文件中的数据
fopen( file ,"r+");
"r+" "a+" "w+" 等方式打开为读写模式,这时,写数据前,要先定位文件指针,如果想改动文件中的内容,则写入的数据长度与要覆盖的数据长度要一致才可以,不然会造成数据覆盖或数据完整性错误!
c语言 ,fread,fwrite和fscanf,fprint不知格式化方式和二进制方式的区别
fread 和fscanf都是读函数
fwrite和fprintf都是写函数。
原理类似 以fread和fscanf对比举例
fread是不管文件中什么内容,直接读到内存中, 不考虑格式。
而fscanf在读的时候, 第一步要做的 和fread相同,先读取字符到内存中,然后要解析格式字符串,根据格式字符串,去判断读到的字符,和格式字符串是否相符,如果相符,再转换成对应的变量类型,存到参数指针中。
比如分析格式字符串为%d,那么就要判断读到的字符是不是0~9之间的,是的话 再读下一个,直到读到不是0~9之间的字符。 最后 再把读到的字符,转为整型。
由于有这些判断,转换,所以效率自然低。
至于文件打开的方式是文本或者二进制, 和使用哪个函数没太多关系
一般fscanf用于文本,而fread用于二进制。 但并非绝对,二进制也可以用fscanf,而文本也一样可以用fread的。
fread和fprintf,fwrite和fscanf的区别是什么?
fread fwrite fprintf fscanf fopen 这些都是带缓存的文件操作函数
fopen 打开文件,返回文件指针 对应的函数是 fclose(); 关闭文件指针
fread 是读取文件内容到数据缓冲区---指针(支持二进制数据) 对应的函数是 fwrite :将数据缓冲区的数据写到文件中去。
fscanf 格式化读文件内容到相应的数据指针中去(只支持文本方式) 对应的是 fprintf :格式化输出数据到文件中去。
C语言写文件的问题,用fwrite写出来的是乱码,用fprintf写的不完整而且也是乱码,用fputs编译出错 - -
fwrite是写入二进制。 右边的乱码是文本编辑器按照asscll码来显示的。
你如果需要写成可视化文本。需要对函数改造,可以逐个字节读取,并按照整形数fprintf进文件就可以了。
例如 rBuf 中分别是C4 4F 38 37 B6 18 58
unsigned char* p = (unsigned char*)rBuf;
fprintf("%d ", *p++); // 用循环控制
用fwrite写入的是二进制的数,是看不懂的。用fprintf写入,要用fscanf读出的。
c语言怎么用二进制方式读取文件
C语言中二进制文件的读取要用fread和fwrite来实现。 fwrite()与fprintf()是不同的。 fwrite将写入的数据作为文件的磁盘内容保存。fprintf将写入的数据的每个字符所对应的ASCII码作为文件的磁盘内容保存。fprintf做了一个转换的工作。
为什么很多库函数名称前有f 如fscanf ,fclose,fprintf, 等等,这是什么意思
这一类函数表示是对文件操作的函数,fscanf是从文件写入到自定义缓冲区的函数,fclose是关闭文件,fprintf是从终端写入到文件的函数,可见这些函数都是对文件的操作,f 是英文file的意思。
表示这些函数都是用于对文件进行操作的函数。
f表示的是操作文件。file的意思。就是向文件中读取(fscanf),向文件中写入fsprintf,还有就是关闭文件(fclose),还有fopen(以某种形式打开文件),fread,fwrite。。。等等都是在操作文件的。