zoukankan      html  css  js  c++  java
  • 信息安全系统设计与实现第二周:《Unix/Linux系统编程》第九章学习笔记

    c语言库函数访问文件

    文件的创建和打开

    FILE *fopen(const char *filename,const char *mode)
    filename:文件名
    mode:打开模式

    常见的打开方式:

    r,rb 只读
    w,wb 只写,如果文件不存在就创建
    a,ab 追加,如果文件不存在就创建
    r+,r+b,rb+ 读写方式打开
    w+,w+b,wh+ 读写方式打开,文件不存在则创建
    a+,a+b,ab+ 读和追加方式打开,文件不存在则创建

    读文件

    (b表示二进制文件)
    size_t fread(void *ptr,size_t size,size_t n,FILE *stream)
    stream:源文件
    n:读取字段数
    size: 每个字段的字节数
    ptr:目标字符数组
    返回实际读取的字节数

    写文件

    size_t fwrite(const void *ptr,size_t size,size_t n,FILE *stream)
    ptr:源数组
    n:字段数
    size:字段的字节数
    stream:目标文件
    返回实际写入字段数

    从文件读字符

    int fgetc(FILE *stream)

    向指定文件写入字符号

    int fputc(int c,FILE *stream)

    格式化读

    int fscanf(FILE *stream,char *format[,argument...])
    从一个流中进行格式化输入

    C的文本读写和二进制读写

    • 因为文本文件与二进制文件的区别仅仅是编码上不同,所以他们的优缺点就是编码的优缺点,这个找本编码的书来看看就比较清楚了。一般认为,文本文件编码基于字符定长,译码容易些;二进制文件编码是变长的,所以它灵活,存储利用率要高些,译码难一些(不同的二进制文件格式,有不同的译码方式)。
    • C的文本方读写与二进制读写的差别仅仅体现在回车换行符的处理上.文本方式写时,每遇到一个'' ''(0AH换行符),它将其换成'' ''(0D0AH,回车换行),然后再写入文件;当文本读取时,它每遇到一个'' ''将其反变化为'' '',然后送到读缓冲区.二进制读写时,其不存在任何转换,直接将写缓冲区中数据写入文件。
    • 总地来说,从编程的角度来说,C中文本或二进制读写都是缓冲区与文件中二进制流的交互,只是文本读写时有回车换行的转换.所以当写缓冲区中无换行符'' ''(0AH),文本写与二进制写的结果是一样的,同理,当文件中不存在'' ''(0DH0AH)时,文本读与二进制读的结果一样。
  • 相关阅读:
    SEH(Structured Exception Handling)详细解释
    Command Query Responsibility Segregation
    C#中Func和Expression的区别
    C#的yield return是怎么被调用到的?
    C#的static constructor抛了异常会怎么处理?
    developer应该知道的image知识(JPG和PNG)
    网站前台与后台的连接
    短消息类新旧服务代码对应表
    无线广告巨头渠道火拼
    中国移动下一代移动技术将选择LTE
  • 原文地址:https://www.cnblogs.com/ckx1212-20191308/p/15304075.html
Copyright © 2011-2022 走看看