计算机之路————C语言基础快速复习4

计算机之路————C语言基础快速复习4
文件操作:
    
    数据保存在文件中,不受数量的限制;运行时不必重新输入,直接使用文件中的数据。
    文件是数据集合体。与外部设备,磁盘文件关联,即与操作系统的文件关联。数据,外部设备一律用文件来管理。
    文件名:    主文件名.扩展名
        扩展名可以确定文件类型。
        .c是C语言的源程序文件
        .cpp是C++源文件
        .h头文件
        .jpg
        .txt
        .doc
        等等
        
        绝对文件名
        相对文件名
    文件分类:
        顺序文件
        随机文件
        
        普通文件
        设备文件:各种外设(显示器,打印机,键盘等等)(操作系统中把外部设备一律作为文件来处理)
        
        ASCII文件/文本文件/TEXT文件
        二进制文件(如果用记事本打开二进制文件无法读懂内容!)
            实际上,ASCII文件,二进制文件都是用二进制编码进行保存。不同的是编码和解码方式。
            所有文件都可以理解为是二进制文件
    
    文件指针:
        C语言为每个文件都开辟一个存放文件有关信息的区域,该区域类型是一个FILE类型的结构体类型。(头文件stdio.h)
        用一个指向FILE的指针来标识具体文件,这个指针的类型是FILE*,即文件指针
        常量:
            NULL————值为0,表示打开文件失败!!!
            EOF————值为-1,表示文件结束或者文件操作出错!
        流程:打开文件----操作文件----关闭文件
        
    打开文件:
        FILE* fp=fopen("文件名","打开模式"); //若失败返回NULL
            写文件名时候,盘符后面两个反斜杠!!,后面的一个反斜杠即可!
            打开模式:
            "r"  只读
            "w"  只写/新建 ,原内容删除!
            "a"  只写/新建(附加)(原内容不删除)
            "r+"  可读
            "w+" 可写,原内容删除!
            "a+"  可写/新建(可附加)(原内容并不删除)
            
            "rb"  所有加上字母b的表示针对二进制文件进行操作
            "wb"
            "ab"
            "rb+"
            "wb+"
            "ab+"
    关闭文件:
        fclose(fp); //若出错返回EOF

    对于文本文件操作:
        写字符:fputc(int ch, 文件指针); //若出错返回EOF
        写字符串:fputs(char*str,文件指针); //若出错返回EOF
        格式化写:fprintf(文件指针,"格式控制符如%d%s", 参数值); //若失败返回一个负数。成功则返回写入字符数量
        //写操作进行后自动移动指针
        
        读字符:fgetc(文件指针);//返回字符的ASCII码,int型。失败返回EOF
        读字符串:fgets(char*str,int num,文件指针);//读字符串(字符数量为num个)读到字符数组str中
        格式化读:fscanf(文件指针,"格式控制符",参数列表如&a&b);从文件读到参数列表中,相当于给参数列表赋值(&a)
        //读操作进行后自动移动指针

    对于二进制文件操作:
        写数据块函数:fwrite(字符数组指针,要写的每个数据块长度,数据块数量,文件指针);
        读数据块函数:fread(字符数组指针,要读的每个数据块长度,数据块数量,文件指针 );

    定位函数:
        调整指针位置:
            rewind(文件指针);会是指针指向文件开始
            fseek(文件指针,偏移量,起始位置);
                偏移量>0指针会向尾部移动,小于零会向文件首移动
                起始位置:SEEK_SET(0)表示文件开始处
                            SEEK_CUR(1)当前位置
                            SEEK_END(2)表示文件结尾
                            
        说明当前位置:
            ftell(文件指针); 给出当前位置
            feof(文件指针);是否到达了文件末尾;若到达文件末尾了返回EOF

 

动态数据:
    存储成为动态的,链式结构可以满足要求
    动态变量—————在程序运行时,由申请空间函数(malloc)随机地动态申请的变量,由释放空间函数(free)释放。没有名字,用指针标识。
    涉及到用户程序的内存结构:
            栈区空间(自动存储类别的数据和变量)
            堆区空间(malloc申请的动态申请的变量)
            库代码空间
            静态区空间
            目标代码空间
            
    void* malloc(size);//返回的是void*类型,必须要进行强制类型转换。
    free(ptr);//释放空间
    
    动态数据结构:
        一个数据项:
        struct t{
            基本数据部分
            struct t* next;
        };
    
    链表
        单向,双向,环形,双向环形
        向链表头添加数据
        遍历
        检索
        插入
    栈
        弹栈
        压栈
    队列
        出队
        入队
    
    树
    图

 

强制终止程序:exit(0);表示正常退出。exit(n)是非正常退出,并将n传给操作系统。
程序参数:
    DOS下exe文件执行方式:(以copy.exe文件为例)
        copy 源文件名 目标文件名
        在该copy.exe程序中,main函数带有参数。void main(int argc,char* argv[]);
        
    void main(int argc,char* argv[]);
    argv是个数组指针,argv[0]指向第一个参数,argv[1]指向第二个参数......
    args表示参数个数。
    可以在main函数体当中使用参数argc与argv[](形参)


共用体union:
    结构体与共用体的本质差别就是,结构体类型中的所有成员一个接一个顺序分配存储空间,互不冲突。
    共用体类型中的所有成员占用公共的存储空间,各个成员的存储空间是重叠的。(所有成员公用一块空间,不可以同时对各个成员分配!)

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值