• 二进制文件和文本文件的读写


      数据怎么在磁盘上写不是由文件打开方式决定的,而是由写函数决定的。数据怎么从磁盘上读也不是由文件打开方式决定的,而是由读函数决定的。
    上面说的数据怎么写是指,一种类型的变量是怎么存的?比如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.

  • 相关阅读:
    EF中連表查詢的應用方式
    排序刷新及其分頁
    SpringMVC与前台的json数据交互
    最详细的springmvc-mybatis教程
    数据库主从复制
    display:inline、block、inline-block的区别
    Yii框架中有关于layout的说明
    创建yii的第一个应用
    学习bootstrap的总结文章
    数据库事物隔离级别通俗理解
  • 原文地址:https://www.cnblogs.com/zzy-frisrtblog/p/6000218.html
Copyright © 2020-2023  润新知