弱弱的问个C语言的问题 关于二进制文件的读写

要把结构体以块的形式写入文件中
为什么要用的西wb ?
就是要写进2进制文件?
写入普通文件
用w可以吗

linux操作系统不区分文本文件和二进制文件,只有在windows上才需要wb。你可以试验一下,到底默认是二进制还是文本的。

二进制方式很简单,读文件时,会原封不动的读出文件的全部内容,写的时候,也是把内存缓冲区的内容原封不动的写到文件中。
而文本方式就不一样了,在读文件时,会将换行符号CRLF(0x0D 0x0A)全部转换成单个的0x0A,并且当遇到结束符CTRLZ(0x1A)时,就认为文件已经结束。相应的,写文件时,会将所有的0x0A换成0x0D0x0A。
所以,若使用文本方式打开二进制文件时,就很容易出现文件读不完整,或内容不对的错误。即使是用文本方式打开文本文件,也要谨慎使用,比如复制文件,就不应该使用文本方式。
要特别注意的是,上面这样的说法仅适用于DOS和Windows系统。在Unix和其他一些系统中,没有文本方式和二进制方式的区分,使不使用'b'标志都是一样的。这是由于不同操作系统对文本文件换行符的定义,和C语言中换行符的定义有所不同而造成的。
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-12-12
用b呢,写进去的东西完完整整——不掉一个字节!

不用的话,那就是文本模式。
文本模式可能会做一些转换动作,如将“\n"转换为"\r\n"或相反——只是可能,编译器依赖、平台依赖。

弱弱的问个C语言的问题 关于二进制文件的读写
linux操作系统不区分文本文件和二进制文件,只有在windows上才需要wb。你可以试验一下,到底默认是二进制还是文本的。二进制方式很简单,读文件时,会原封不动的读出文件的全部内容,写的时候,也是把内存缓冲区的内容原封不动的写到文件中。而文本方式就不一样了,在读文件时,会将换行符号CRLF(0x0D 0...

c语言读取二进制数据文件
步骤如下:1、数据流:程序与数据间的交互是以流的形式进行。在C语言文件存取时,打开文件操作,关闭数据流。2、缓冲区:程序执行时,提供的额外内存以暂时存放数据。缓冲区作用是为了提高存取效率,内存的存取速度比磁盘快。3、文件类型:分为文本文件和二进制文件两种。补充:1、文本文件:字符编码的方...

c语言读取二进制数据文件
1、二进制文本使用fopen函数的二进制模式“rb”就可以打开。对于程序来说,不管后缀名如何,文件分为两种类型:文本文件和二进制文件。 C语言里有一系列文件操作函数。区分文本和二进制文件,需要在打开文件时设置不同的控制符mode的变量即可。2、fopen的函数原型:FILE * fopen(const char * path,const...

c语言关于fprintf的问题。
rb+ 读写打开一个二进制文件,允许读写数据,文件必须存在。rw+ 读写打开一个文本文件,允许读和写。w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。...

关于c语言读取二进制文件fread问题
当程序需要读取某个文件时,实际就是把数据读入内存由CPU运算,CPU首先去缓存中找寻,查找不到就会到内存中去读取同时复制到缓存中以便下次访问,这个时候速度自然很慢,当你第二次读取该文件时,缓存中已经存在,CPU再次访问这些数据就会变的非常快。这是和系统读取数据的方式有关的,并不是因为某个函数...

1.40 C语言,读取二进制文件的函数调用形式为fread(buffer,size,count...
buffer是用来存放读取出来的数据的缓冲区 size是每次读取得大小 cout是多少个size,也就是说实际读取的字节数是size*cout个 fp是文件指针,你指定文件名打开文件时得到的一个文件指针 你查看函数手册,有英文描述吧,仔细看看,习惯了就懂了怎么获取信息 ...

c语言中文件的读与写的问题,涉及fscanf,fwrite函数 程序如下 (先上30...
1 不管是什么 w也好 wb也好 你写的时候用的是fwrite 就是二进制写入 必须要用fread来读入,直接打开文件看 有乱码很正常 当然 如果你能在给结构体赋值前把结构体内容初始化一下 就没有乱码了 2 fscanf 跟scanf一样的 多少个空格都按一个算 不以空格换行 是流的模式 你懂吗 3 见我1里面的...

C语言文本方式和二进制方式读写操作的区别
首先要明白一点:任何数据在内存中或者硬盘上的存储都是1、0组成的序列,从硬盘、内存这个角度看根本不存在什么二进制和文本模式之分 区别 稍对C语言操作文件有了解都知道2点:1、首先应该fopen打开文件2、有两类文件操作函数,对应着二进制模式和文本模式。两个模式的区别在两个地方,这两个地方的区别...

C语言中文件的读写是什么格式
C语言读写文件有两种方式: 一种是文本方式,另一种是2进制方式。日文,中文,unicode, 都要用2进制方式。文件内容的编码和编码的转化,同一种编码的大端或小端编码,都要自己安排处理。C语言不管读写都要通过fopen函数来,其中mode参数可以控制以二进制打开还是以文本方式打开。fopen的函数原型:FILE *...

C语言读写二进制文件读取 大小端,该怎么解
fread()会返回实际读取到的nmemb数目,如果此值比参数nmemb 小,则代表可能读到了文件尾或有错误发生,这时必须用feof()或ferror()来决定发生什么情况。返回实际读取到的nmemb数目。详情参见上面的代码。另外就是大小端的问题了。关于大小端的具体解释网上有很多,在此不作解释。参考上面写的代码,我判断...

相似回答