对于二进源文件,二进制文件和文本文件有什么区别?对于文本流呢

对于二进流文件,二进制文件和文本文件有什么区别?对于文本流呢
怎么理解这些概念啊 求解

------解决方案--------------------
windows和linux处理是不一样的,前者用特殊的结束字节加以区分,所以千万不要混用(文本打开写入"hello",二进制打开读会多于5个字节)。

linux下文本和二进制存储方式是一致的,是非常合理的。
------解决方案--------------------
推荐使用WinHex软件查看硬盘或文件或内存中的原始字节内容。

不要把
fopen("...","...");fscanf,fprintf,fclose //读时把\r\n替换成\n,写时把\n替换成\r\n;读到\x1a就设置EOF;读写的内容当字符看待

fopen("...","...b");fread,fwrite,fclose  //不作以上替换,遇到\x1a仍继续读;读写的内容当字节看待
弄混了

------解决方案--------------------
二进流文件,二进制文件和文本文件
1)流:
C 的FILE×,C++ 的iostream{istream,ostream等},fstream(ifstream,ofstream,iofstream等)
称作流式文件,简称流。
是一种带缓冲的输入输出。
有文本流,和二进制流两种,打开和读写方式有所不同。

除此之外,windows的 HANDLE文件和读写HANDLE的API函数是非缓冲输入输出。
dos 和其他操作系统还有两种文件和相应的读写函数
 a)FCB 文件,相当古老的格式了
 b)文件代号,和windows的 HANDLE文件差不多,只是读写函数不同。
这两种也是非缓冲的。
至少在C,C++看来,以上三种都是非缓冲的读写方式。 

2)二进制文件
二进制文件,包括整型数据,浮点型数据,按照内存数据原有的格式(二进制数据格式)存储到文件中。
读取时,原封不动的读到内存。文件中的数据和内存中的数据格式相同。
3)
文本文件,数据存储成文本格式。整型数据,浮点型数据,以十进制(有时是16进制)格式ASCII码表示;
是一种人可以很容易识别的格式。这种格式的文件打印和显示都很方便(显示器和打印机的字体
每个字符的图形编码按照ASCII顺序排列的)。

C流和C++流都可以是二进制,和文本格式。
PS:
1)无论是二进制,还是文本格式,都可以用二进制格式打开读写。
只是文本格式除了会格式化输入输出 整型数据,浮点型数据外,还进行其他的数据转换操作。
所以:
2)二进制格式,用seek,fseek定位很容易,读写简单。
可执行文件,以及编译好的obj,lib 使用这种方式。
3)文本格式,seek,fseek定位比较麻烦,还会转换字符,一般要安排好数据的表示方式后,使用才好。
   优点是,显示容易,符合人的习惯。
   一般各种语言的源文件使用这种格式。