问个弱智问题,文件以二进制打开和文本方式打开的区别在哪里?

max_xy 2005-10-12 04:29:21
如题
...全文
603 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
megaboy 2005-10-13
  • 打赏
  • 举报
回复
ASCII码26这个EOF无论文本还是二进制模式下都会产生的,不管从哪方面说,都不是文本和二进制模式的区别。把ASCII26作为一个文件的结束符这种行为是系统相关的,并不是C标准里面的内容,windows下的C文件处理函数有这个问题,而unix/linux下没有,当然不排除个别unix/linux可能也存在这个问题。

ddmor 2005-10-13
  • 打赏
  • 举报
回复
以上doway(john),megaboy(飞天御剑流之杀神一刀斩),changyanxiao(踏雪无情)都说到了文本访问的特点,不过还是不全面,综合他们的说明如下。
文本方式读文件,会对一些特殊字符进行处理,首先对回车换行的处理,在windows下(不同系统有所区别,unix是不变,mac为'\r'),文本方式会把\n转换为\r\n,读取的时候又把\r\n转换回\n。
其次是对文件结束符0x1a(ctrl+z)的判断处理,文本方式读到该字符的时候就自动结束,而二进制方式不会对以上字符进行处理。
brucelee0224 2005-10-13
  • 打赏
  • 举报
回复
通过文件描述符号访问文件,和文件指针访问文件,方式不一样吧,文件指针是有缓冲的
deping_chen 2005-10-13
  • 打赏
  • 举报
回复
我个人认为:
以文本方式和二进制方式打开文件的主要区别是:
int i;
file >> i;和
file << i;
的工作方式是不一样的。对于其他非字符串类型也有同样的问题。
tyg1982 2005-10-13
  • 打赏
  • 举报
回复
学习
antijpn 2005-10-12
  • 打赏
  • 举报
回复
转新手乐园

另外,楼上胡说……
hundlom 2005-10-12
  • 打赏
  • 举报
回复
基本是对null字节处理的不同。文本遇见null就停止,而二进制则可以处理
jsjjms 2005-10-12
  • 打赏
  • 举报
回复
汇编和c语言有什么区别?
yzisyz 2005-10-12
  • 打赏
  • 举报
回复
我认为本质上并没有区别,关键是读写文件时的处理方式不同,本质上读写文件时都是2进制的。
changyanxiao 2005-10-12
  • 打赏
  • 举报
回复
文件是在计算机内存中以二进制表示的数据在外部存储介质上的另一种存放形式。
文件通常分为二进制文件和文本文件。
二进制文件是包含在 ASCII 及扩展 ASCII 字符中编写的数据或程序指令的文件。一般是可执行程序、图形、图象、声音等等文件。
文本文件(也称为ASCII文件):它的每一个字节存放的是可表示为一个字符的ASCII代码的文件。它是以 “行”为基本结构的一种信息组织和存储方式的文件,可用任何文字处理程序阅读的简单文本文件。
当我们按照文本方式往文件中写入数据时,一旦遇到换行字符(ASCII为10),则会转换为回车-换行(ASCII为13、10)。在读取文件时,一旦遇到回车-换行的组合(即连续的ASCII 13、10),则会转换为换行字符(ASCII为10)。
当我们按照二进制方式往文件中写入数据,则将数据在内存中的存储形式原样输出到文件中。
megaboy 2005-10-12
  • 打赏
  • 举报
回复
其实只有一个区别,就是对\n的处理,在windows下,文本方式会把\n转换为\r\n,读取的时候又把\r\n转换回\n。
doway 2005-10-12
  • 打赏
  • 举报
回复
判断文件结束的方式也不同。
寻开心 2005-10-12
  • 打赏
  • 举报
回复
二进制打开后用二进制的读写文件函数
文本方式打开要用文本方式的读写函数

否则都会出问题的,尤其是在遇到回车换行的时候
文本方式打开和文本方式读写的时候,遇到回车换行这样的标记可能会做特殊处理的,转换成为一个字符。
而二进制方式不同,一个字符就是一个字符不会特殊处理

最好的选择就是文本文件用文本方式打开和读写,二进制文件用二进制方式打开和读写

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧