精华内容
下载资源
问答
  • 综述:不管是文本文件,还是二进制文件,在其中存储的都是二进制1和0组成的数据。...除非用文本方式打开时,fwrite时会将换行(ASCII码10)转换为回车(13)换行(10)。fread时会将回车换行两个字符

    综述:不管是文本文件,还是二进制文件,在其中存储的都是二进制1和0组成的数据。

    文本(text)文件:也成ASCII文件。如.txt文件。

    二进制文件。

    不管是文本文件还是二进制文件,当使用fwrite和fread时,都是直接将buffer中的内容原样复制到文件中。除非用文本方式打开时,fwrite时会将换行(ASCII码10)转换为回车(13)换行(10)。fread时会将回车换行两个字符转换为换行字符。无论是文本文件还是二进制文件,都会这样转换。

     

     

     

    展开全文
  • 我觉得,对于编程人员,文本文件和二进制文件就是一个声明,指明了你应该什么方式文本方式/二进制)打开这个文件,用什么函数读写这个文件(读写函数),怎么判断读到这个文件结尾。 具体的说: 1...

    转自:http://blog.sina.com.cn/s/blog_50b7dd7101012979.html

    我们都知道,文本文件和二进制文件在计算机上面都是以0,1存储的,那么两者怎么还存在差别呢?我觉得,对于编程人员,文本文件和二进制文件就是一个声明,指明了你应该以什么方式(文本方式/二进制)打开这个文件用什么函数读写这个文件(读写函数),怎么判断读到这个文件结尾

    具体的说:

    1。以哪种方式打开一个文件?

    ANSI C规定了标准输入输出函数库,用 fopen()函数打开文件。fopen()函数的调用方式一般为:

    FILE *fp;

    fp=fopen(文件名,使用文件方式);

    使用文件方式见下表:

    使用文件方式

    含义

    "r"(只读)

    为输入打开一个文本文件

    "w"(只写)

    为输出打开一个文本文件

    "a"(追加)

    为追加打开一个文本文件

    "rb"(只读)

    为输入打开一个二进制文件

    "wb"(只写)

    为输出打开一个二进制文件

    "ab"(追加)

    为追加打开一个二进制文件

    "r+"(读写)

    为读/写打开一个文本文件

    "w+"(读写)

    为读/写创建一个文本文件

    "a+"(读写)

    为读/写打开一个文本文件

    "rb+"(读写)

    为读/写打开一个二进制文件

    "wb+"(读写)

    为读/写创建一个二进制文件

    "ab+"(读写)

    为读/写打开一个二进制文件

    同一个文件从磁盘读取文件到内存(程序数据区或者缓存区)时,两种方式下,内存中的内容一般不相同,这就是两种打开方式的实质性差别

    这里要说一个背景,那就是在windows下,它会做一个处理,就是写文件时,换行符会被转换成回车,换行符存在磁盘文件上,而读磁盘上的文件时,它又会进行逆处理,就是把文件中连续的回车,换行符转换成换行符。

    因此,在读取一个磁盘文件时,文本方式读取到文件内容很有可能会比二进制文件短,因为文本方式读取要把回车,换行两个字符变成一个字符,相当于截短了文件。但是为什么仅仅是可能呢?因为可能文中中不存在连着的4542这两个字节(45CR回车的ASCII码,42是换行符CLASCII码),也就不存在截短操作了,因此读到的内容是一样的。

    具体的来说,文件文件(以文本方式写的),最好以文本方式读。二进制文件(以二进制方式写的),最好以二进制方式读。不然可能会不正确。上面的已经分析了。

    2.以什么函数读写文件?

    数据怎么在磁盘上写不是由文件打开方式决定的,而是由写函数决定的。数据怎么从磁盘上读也不是由文件打开方式决定的,而是由读函数决定的。

    上面说的数据怎么写是说指,一种类型的变量是怎么存的?比如int 12,可以直接存12的二进制码(4个字节),也可以存字符1,字符2.

    数据怎么读的是指,我要读一个int变量,是直接读sizeofint)个字节,还是一个字符一个字符的读,直到读到的字符不是数字字符。

    C里面有两组文件读写函数恰好支持上面两种方式的读写:

    1.fread(buffer,size,count,fp),fwrite(buffer,size,count,fp)。用来读写一个数据块。它对应的是第一种存储方式。直接按类型的字节长度指定读写的字节数。

    2fprintf函数和fscanf函数.它对应的是第二种读写方式。即以字符的方式读写。(fprintf函数、fscanf函数与printf函数、scanf函数的作用相仿,都是格式化读写函数。fprintffscanf函数的读写对象是磁盘文件,而printfscanf函数的读写对象是终端。)

    它们的一般调用格式为:

    fprintf(文件指针,格式字符串,输出列表);

    fscanf (文件指针,格式字符串,输入列表);

    3怎么判断文件尾?

    C语言,或更精确地说成 C标准函式库中,有一个特别的字符EOFstdio.h中这个定义 #define EOF (-1) ,它表示:文件结束符(end of file)。在while循环中以EOF作为文件结束标志,这种以EOF作为文件结束标志的文件,必须是文本文件。在文本文件中,数据都是以字符的ASCII代码值的形式存放。我们知道,ASCII代码值的范围是0~255,不可能出现-1,因此可以用EOF作为文件结束标志。

    但是,C语言中,当把数据以二进制形式存放到文件中时,就会有-1值的出现,此时不能采用EOF作为二进制文件的结束标志。为解决这个问题,ANSI C提供一个feof函数,用来判断文件是否结束。如果遇到文件结束,函数feoffp)的值为1,否则为0.

    feof函数既可用以判断二进制文件是否结束,也可以用以判断文本文件是否结束。但是要注意feof用以判断文本文件尾时,如果代码编写不当,可能会把文本文中中的文件结束符EOF也读取出来了;具体见http://baike.baidu.com/view/656648.htm

    4.知道一个文件是文本文件,还是二进制文件,更多的提醒我们,应该选择哪种读写函数。

    正如2所说的,数据怎么存不是由文件打开方式决定的,而是由读写函数决定的。

    比如说,我们以二进制文件的方式打开一个文件(实际上只是指明了要进行换行符的转换),它更多的是代表一种理念(虚的):我希望这个文件里面的数据是这样的,int类型占4字节,char1个字节。这种模式下,我用fread(buffer,size0f(int),1,fp)读取一个intint变量中。

    我们记住

    我们在对一个文件进行操作以前,首先,我们要清楚这个文件到底是文本文件还是二进制文件文件文件用文本方式打开,二进制文件用二进制方式打开

    如果我们要操作一个二进制文件,那么我们就以二进制方式打开(理论上也可以以文件方式打开,但是如果写的二进制数据里面有45时,会转化成45,42存储,见1.这是很有可能发生的)。同时读写的时候用freadfwrite这两个函数。

    如果我要操作一个文本文件,那么我们就以文本的方式打开(理论上也可以以二进制方式打开,但是不保险)。同时读写的时候用读写字符的那些函数fprintf,fscanf ,fgetc,fputc,putw,getw,fgetc,fputs

     

    展开全文
  • c 打开文件方式(二进制和文本

    千次阅读 2013-09-05 15:16:40
    c语言文件操作的一个问题:  c语言中打开文件有两种方式,一种是二进制方式,另一种是文本方式(ASCII...以文本方式打开文件,若将数据写入文件,如果遇到换行符'\n'(ASII 值为10,0A),则会转换为回车—换行'\r\n'

    c语言文件操作的一个问题:

       c语言中打开文件有两种方式,一种是二进制方式,另一种是文本方式(ASCII码方式)。这两种方式有什么区别?(对于Linux这种只有一种文件类型的操作系统来说是没有区别的)

       我们就以windows为例说说区别:

       a.以文本方式打开文件,若将数据写入文件,如果遇到换行符'\n'(ASII 值为10,0A),则会转换为回车—换行'\r\n'(ASCII值为13,10,0D0A)存入到文件中,同样读取的时候,若遇到回车—换行,即连续的ASCII值13,10,则自动转换为换行符。

          而以二进制方式打开文件时,不会进行这样的处理。

       b.还有如果以文本方式打开文件时,若读取到ASCII码为26(^Z)的字符即0x1a,则停止对文件的读取,会默认为文件已结束,而以二进制方式读取时不会发生这样的情况。由于正常情况下我们手动编辑完成的文件是不可能出现ASCII码为26的字符,所以可以用feof函数去检测文件是否结束。

       所以,由于存在上面的两个区别,我们在明确文件类型的时候,最好使用相对应的方式对文件进行打开。对于那些不明确文件类型的时候,最好使用二进制方式打开文件。

    展开全文
  • 二进制和文本方式打开文件的区别

    千次阅读 2012-11-11 16:54:15
    二进制文件处理时会碰到的问题 我们使用处理二进制文件时,需要用如下方法 binfile=open(filepath,'rb') 读二进制文件 binfile=open(filepath,'wb') 写二进制文件 那么和binfile=open(filepath,'r')的结果到底有...
    二进制文件处理时会碰到的问题 
    

    我们使用处理二进制文件时,需要用如下方法

    binfile=open(filepath,'rb')    读二进制文件

    binfile=open(filepath,'wb')    写二进制文件

    那么和binfile=open(filepath,'r')的结果到底有何不同呢?

    不同之处有两个地方:

    第一,使用'r'的时候如果碰到'0x1A',就会视为文件结束,这就是EOF。使用'rb'则不存在这个问题。即,如果你用二进制写入再用文本读出的话,如果其中存在'0X1A',就只会读出文件的一部分。使用'rb'的时候会一直读到文件末尾。

    第二,对于字符串x='abc\ndef',我们可用len(x)得到它的长度为7,\n我们称之为换行符,实际上是'0X0A'。当我们用'w'即文本方式写的时候,在windows平台上会自动将'0X0A'变成两个字符'0X0D','0X0A',即文件长度实际上变成8.。当用'r'文本方式读取时,又自动的转换成原来的换行符。如果换成'wb'二进制方式来写的话,则会保持一个字符不变,读取时也是原样读取。所以如果用文本方式写入,用二进制方式读取的话,就要考虑这多出的一个字节了。'0X0D'又称回车符。linux下不会变。因为linux只使用'0X0A'来表示换行。

    展开全文
  • fopen等:文本方式和二进制方式打开文件的区别

    万次阅读 多人点赞 2017-09-04 14:23:49
    文本方式和二进制方式在读写文件时是有区别的,以下主要对Windows系统下的一些不同进行说明。 第一: 1、使用二进制方式进行读文件时,会原封不动的读出全部的内容,写文件的时候,会把内存缓冲区的内容原封不动的...
  • 文本与二进制方式打开文件的区别

    千次阅读 2007-11-30 10:51:00
     文本文件也叫做ASCII码文件,与文本方式打开文件不是同一个概念!文本文件存储的是ASSCII码字符,即存储在磁盘上只占用二进制的0x20--0x7e。另外,还有回车(0x0d),换行(0x0a),TAB(0x09)等,所以有可压缩的...
  • fread的误区(以文本格式打开文件

    千次阅读 2016-03-17 15:48:13
    先看一段代码,在读文本文件的时候,第二行可以省略,第四五行一定要有。否则后面代码有坑。(FK微软) void* buffer = malloc(nLength + 2); //maybe wchar, so + 2 memset(buffer, 0, nLength + 2); ret = ...
  • LogViewPro中文版 超大文本文件打开利器

    千次下载 热门讨论 2014-07-03 14:48:12
    LogViewPro中文版 超大文本文件打开利器 不论多少G的文本文件 全部秒开,秒杀ultraedit 等一切自称能够秒开的程序。 拖拉查看 也不卡顿 ,绝对属于神器级别的。
  • Python3中打开文件方式(With open)

    万次阅读 多人点赞 2018-08-05 19:53:16
    python文件读写文件是最常见的IO操作... 读写文件就是请求操作系统打开一个文件对象(通常称为文件描述符),然后,通过操作系统提供的接口从这个文件对象中读取数据(读文件),或者把数据写入这个文件对象(写文件...
  • 如何打开大型文本文件

    万次阅读 2017-07-18 10:39:54
    于是想要打开文件,部分执行。只是这样的大的文件一般的编辑器难以胜任,一番寻找之后在StackOverflow上找到答案。 Text editor to open big (giant, huge, large) text files [closed] 打开大(很大,巨大,非常大...
  • 文本恢复转换器打开文件。当时心里一惊,感觉最近两天的工作算是白做了。问题截图如下: 因为做了很多东西,重头再做花费的时间肯定不短,而且文件有急用。抱着试试的态度,在网上搜索了一下错误。找到了相同的...
  • LTFViewr打开文本文件工具(大于1G以上的文本文件) 解决了大文件notepad、rtf、word等工具打开超级慢甚至都不能打开的问题 本软件是分页显示,比notepad、rtf、word等工具效率高,显示效果好,大家不妨试着用用
  • 将int类型数字以文本方式写入文件

    千次阅读 2007-01-05 15:24:00
    在调试程序时,我需要将代码中一个Int 型变量以文本方式保存到指定的文件中,开始的时候我使用fwrite(),但fwrite()后的文件用记事本打开后为乱码,分析原因,初步认为fwrite()只能二进制的方式保存文件.后来该用如下的...
  • 二进制和文本方式读写文件

    千次阅读 2013-08-31 13:19:48
    因此,fread读取以文本方式打开文件时,等于是读取了包含格式的二进制流,因此会出错。字符是一个二进制数据的特殊表现形式,它仍是数据 字符 'A'=65 =0x41,如果当成字符是A,如果当成数据 就是十进制数65; ...
  • 文本文件打开工具

    千次阅读 2019-10-25 14:14:28
    文件excel 什么的一打开就废了 可以用 logview Ultraedit notepad++ subline也还行
  • 我有一个1G的txt文本文件,使用常规的文本编辑器无法打开,提示文件过大 这个时候,就需要用到一个叫Hex Editor的软件了 Hex Editor的优势: 1 可以编辑非常大的文件 – 高达4GB的 2 具有4种编辑模式(文本、十六进制...
  • 二进制方式打开文件并显示

    万次阅读 2009-09-18 17:03:00
    二进制方式打开文件并显示不管是二进制文件还是文本文件,它们都是二进制数据的方式存储的。对于文本文件来说,它所存放的每一个字节都可以转换为一个可读的字符;而二进制方式读取文件,只是将数据在内存中的...
  • LTFViewr打开文本文件工具(大于1G以上的文本文件) 解决了大文件notepad、rtf、word等工具打开超级慢甚至都不能打开的问题 本软件是分页显示,比notepad、rtf、word等工具效率高,显示效果好,大家不妨试着用用
  • 如何打开ipynb文件

    万次阅读 多人点赞 2017-06-11 22:43:04
    最近在学习《TensorFlow 实战GoogLe深度学习...ipynb,即ipython notebook,需要用ipython notebook打开,IPython Notebook是web based IPython封装,但是可以展现富文本,使得整个工作可以笔记的形式展现、存储,对
  • .dat文本文件怎么打开

    2015-08-25 02:56:20
    邮件附近本来是word文件,怎么就变成了.dat文件打开就是乱码,然后用winhex打开只是16进制数,怎么打开啊,好着急,请大家帮帮忙。谢谢了
  • vi方式打开文件

    千次阅读 2018-08-31 10:11:44
    打开文件方式  vi 文件 ;此方式中按esc可以随意挪动光标而不能插入,在esc下dd是删除一行,x是删除一个字符。按下i之后可以进入插入数据模式,按下a是可以在下 一个光标处插入数据  Ctrl+u:向文件首翻半...
  • 600M文本文件用什么工具打开

    千次阅读 2013-11-20 09:20:45
    最近遇到一个问题:调试j2ee应用的时候需要到日志文件(*.out,实际上就是一个文本... 问题总有解决办法的,我之前打开过一个300M+的文本文件,用的是Visual Studio里打开文件功能。抱着一线希望,试了下,提示“out
  • 以前也不是太注意区别这两种方式。在CSDN上有个帖子,就是讨论的这个,不过没有...有文件data.txt////////////////下面是文本内容///////0 1 2 3 4 5 6 7 8 9 a b c d e 1a bd///////////////////////////文本内容结束/
  • C源程序:输入当前目录下的文本文件名称,尝试打开文件,逐个字符读取文件内容并显示出来。
  • Linux下c语言文本方式文件读取

    千次阅读 2020-02-20 14:31:27
    接着昨天的博客,今天来简单说下文本方式的读取。 fopen函数其实没有什么区别,但是在Windows系统下有点区别。 首先我们还是先打开一个文件 FILE *fp; fp=0; if((fp=fopen("/home/user/Blog/file2.txt","w"))==0) ...
  • 当直接访问的某个文件时,如果该文件是二进制等浏览器无法解析的文件,浏览器才会下载该文件,但如果浏览器可以自己解析该文件,则它会打开文件自己的方式呈现出来,而不会下载,此时就需要设置消息响应头,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 767,563
精华内容 307,025
关键字:

以文本方式打开文件