• 文本方式打开文件 二进制方式打开文件 , 到底有啥区别呢 实测说话


    大家常用到fopen打开文件,准备进行写操作,再用fwrite把数据写入文件,最后用fclose关闭文件。
    如以下C代码:
     
    #include <stdio.h>
    char buf[10] = {10,10,10,10,10,10,10,10,10,10};

    FILE *fp = fopen("c:\test.dat","w");
    fwrite(buf,1,10,fp);
    fclose(fp);

    FILE *fp1 = fopen("c:\test1.dat","wb");
    fwrite(buf,1,10,fp);
    fclose(fp1);

    我们注意到,程序的第一段定义一个数组,每个分量的值为:10,等价的十六进制为0A。

    第二段,先是打开一个文件test.dat进行写操作,再是把10个数据写入文件,最后关闭文件。

    第三段,功能差不多,只是文件名换成了test1.dat,打开文件的模式换成了wb.

    第二段和第三段有什么区别呢?我们看一下最后的文件内容:

    test.dat:  0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A

    test1.dat: 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A

    原因是为什么呢?这就是w 和 wb的区别,w是以文本方式打开文件,wb是二进制方式打开文件,以文本方式打开文件时,fwrite函数每碰到一个0x0A时,就在它的前面加入0x0D.其它内容不做添加操作。

       

    Bin
    (二进制)
    Oct
    (八进制)
    Dec
    (十进制)
    Hex
    (十六进制)
    缩写/字符
    解释

                                                                                                                  

    0000 1010
    012
    10
    0x0A
    LF (NL line feed, new line)
    换行键
    0000 1011
    013
    11
    0x0B
    VT (vertical tab)
    垂直制表符
    0000 1100
    014
    12
    0x0C
    FF (NP form feed, new page)
    换页键
    0000 1101
    015
    13
    0x0D
    CR (carriage return)
    回车键

      

      也就是说,以文本方式打开一个文件,当写入数据时,遇到换行符,会自动加入回车符。

    /************* 社会的有色眼光是:博士生、研究生、本科生、车间工人; 重点大学高材生、普通院校、二流院校、野鸡大学; 年薪百万、五十万、五万; 这些都只是帽子,可以失败千百次,但我和社会都觉得,人只要成功一次,就能换一顶帽子,只是社会看不见你之前的失败的帽子。 当然,换帽子决不是最终目的,走好自己的路就行。 杭州.大话西游 *******/
  • 相关阅读:
    590. N 叉树的后序遍历
    CF605E
    网络流水题题单
    wqs二分的边界
    luoguP6326 Shopping
    【THUWC2020】工资分配
    CF1336简要题解
    「PKUWC2020」最小割
    洛谷P4895 独钓寒江雪
    省选联考2020简要题解
  • 原文地址:https://www.cnblogs.com/happybirthdaytoyou/p/12298875.html
Copyright © 2020-2023  润新知