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

要把结构体以块的形式写入文件中为什么要用的西wb?就是要写进2进制文件?写入普通文件用w可以吗... 要把结构体以块的形式写入文件中
为什么要用的西wb ?
就是要写进2进制文件?
写入普通文件
用w可以吗
展开
 我来答
qmg1023
2013-12-12 · TA获得超过888个赞
知道小有建树答主
回答量:804
采纳率:0%
帮助的人:904万
展开全部
linux操作系统不区分文本文件和二进制文件,只有在windows上才需要wb。你可以试验一下,到底默认是二进制还是文本的。

二进制方式很简单,读文件时,会原封不动的读出文件的全部内容,写的时候,也是把内存缓冲区的内容原封不动的写到文件中。
而文本方式就不一样了,在读文件时,会将换行符号CRLF(0x0D 0x0A)全部转换成单个的0x0A,并且当遇到结束符CTRLZ(0x1A)时,就认为文件已经结束。相应的,写文件时,会将所有的0x0A换成0x0D0x0A。
所以,若使用文本方式打开二进制文件时,就很容易出现文件读不完整,或内容不对的错误。即使是用文本方式打开文本文件,也要谨慎使用,比如复制文件,就不应该使用文本方式。
要特别注意的是,上面这样的说法仅适用于DOS和Windows系统。在Unix和其他一些系统中,没有文本方式和二进制方式的区分,使不使用'b'标志都是一样的。这是由于不同操作系统对文本文件换行符的定义,和C语言中换行符的定义有所不同而造成的。
knifsleep
2013-12-12 · TA获得超过702个赞
知道小有建树答主
回答量:1219
采纳率:51%
帮助的人:225万
展开全部
用b呢,写进去的东西完完整整——不掉一个字节!

不用的话,那就是文本模式。
文本模式可能会做一些转换动作,如将“\n"转换为"\r\n"或相反——只是可能,编译器依赖、平台依赖。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式