zoukankan      html  css  js  c++  java
  • 二进制文件和文本文件的读写

      数据怎么在磁盘上写不是由文件打开方式决定的,而是由写函数决定的。数据怎么从磁盘上读也不是由文件打开方式决定的,而是由读函数决定的。
    上面说的数据怎么写是指,一种类型的变量是怎么存的?比如int 12,可以直接存12的二进制码(4个字节),也可以存字符1,字符2.
    数据怎么读的是指,我要读一个int变量,是直接读sizeof(int)个字节,还是一个字符一个字符的读,直到读到的字符不是数字字符。

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

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

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

    fprintf(文件指针,格式字符串,输出列表);//写函数
    fscanf (文件指针,格式字符串,输入列表);//读函数
    #include <stdio.h>
    
    void main(){
    
        FILE *fp;
        char s[]= "This is a string.",s1[30];
        char c = '
    ';
    
        fp = fopen("file.txt","a");
        fprintf(fp,"%s%c",s,c);
    
        fclose(fp);
        fp=fopen("file.txt","r");
        fscanf(fp, "%[^
    ]
    ", s1);
        printf("%s
    ",s1);
        fclose(fp);
    
    }


    补充:文件结束符
    文本文件适用:
    EOF:通过#define EOF (-1) ,判断文件指针指向的值是否为EOF来判断是否结束
    二进制适用:
    feof(FILE *p):避免了二进制中需要的文件中出现-1二被EOF误判为结束符,出现的一种操作,遇到结束返回1,否则返回0.

  • 相关阅读:
    remote: You are not allowed to push code to this project
    Ubuntu 查看本机的ip
    git跟踪远程分支,查看本地分支追踪和远程分支的关系
    edgedb 基本试用
    influxdb 全家桶运行
    Introducing Outflux: a smart way out of InfluxDB
    使用outflux 导入influxdb 的数据到timescaledb
    edgedb 强大的对象关系数据库
    Announcing the Operate Preview Release: Monitoring and Managing Cross-Microservice Workflows
    goaccess iis w3c 自定义log 格式参考
  • 原文地址:https://www.cnblogs.com/zzy-frisrtblog/p/6000218.html
Copyright © 2011-2022 走看看