c语言文件初谈

#1.文件的概述
    文件可以分为文本文件和二进制文件两大类:
        a.文本文件,也称为ASCII文件。这种文件在保存时,每个字符对应一个字节,用于存放对应的ASCII码。
        b.二进制文件,不是保存ASCII码,而是按二进制的编码方式来保存文件内容。文件可以从不同的角度进行具体的分类:
            从用户的角度(或所依附的介质)看,文件可分为普通文件和设备文件两种。
            按文件内容可分为:源文件、目标文件、可执行文件、头文件、数据文件等。

#2.文件指针
    文件指针是一个指向文件有关信息的指针,这些信息包括文件名、状态和当前位置,它们保存在一个结构体变量中。声明为:
    typedef struct
    {
        short level;
        unsigned flags;
        char fd;
        unsigned char hold;
        short bsize;
        unsigned char *buffer;
        unsigned ar *curp;
        unsigned istemp;
        short token;
    }FILE;
在使用时可直接用其定义的FILE类型来定义变量,如:FILE *fp;
    a.文件的打开
fopen函数的原型在stdio.h中,其打开一个文件就是创建一个流。
    一般形式:
        FILE *fp;
        fp = fopen(文件名,使用文件方式);
其中,“文件名”是将要打开文件的文件名,“使用文件方式”是指对打开的文件要进行读还是写。
r(只读)    w(只写建)    a(追加)    rb(二进制只读)    wb(二进制只写建)    ab(二进制追加)    r+(读写)    w+(读写建)    a+(读写追加)
如果使用fopen函数打开文件成功,则返回一个有确定指向的FILE类型指针;若打开失败,则返回NULL。
    打开失败的原因:
        1.指定的盘符或路径不存在;
        2.文件名中含有无效字符;
        3.以r模式打开一个不存在的文件;
    b.文件的关闭
文件在使用完毕后,应使用fclose函数关闭。原型也在stdio.h中。
    一般形式:
        fclose(文件指针);
fclose函数也带回一个值,当正常完成关闭文件操作时,fclose函数返回值为0,否则返回EOF。在程序结束之前应关闭所以文件,这样做的目的是防止因为没有关闭文件而造成的数据流失。

#3.文件的读写
    a.fputc函数
函数的作用是把一个字符写到磁盘文件(fp所指的文件)中去。如果函数输出成功则返回值就是输出的字符;如果输出失败,则返回EOF。
    一般形式:
        ch = fputc(ch,fp);
    b.fgetc函数
函数的作用是从指定的文件(fp所指的文件)读入一个字符赋给ch。需要注意的是,该文件必须是以读或读写的方式打开。当函数遇到文件结束符时将返回一个文件结束标志EOF。
    一般形式:
        ch = fgetc(fp);
    c.fputs函数
函数的作用是向指定文件中写入一个字符串。其中字符串可以是字符串常量,也可以是字符数组名、指针或变量。
    一般形式:
        fputs(字符串,文件指针);
    d.fgets函数
函数的作用是从指定的文件中读一个字符串到到字符数组中。n表示所得到的字符串中字符的个数(包含'\0');
    一般形式:
        fgets(字符数组名,n,文件指针);
    e.fprintf函数
函数的作用对磁盘文件进行写入数据,即将整型变量i的值以%d的格式u输出到fp指向的文件中。
    一般形式:
        ch = fprintf(文件类型指针,格式字符串,输出列表);
eg:fprintf(fp,"%d",i);
    f.fscanf函数
函数的作用是在磁盘文件读入数据,即读入fp所指向的文件中的i的值。
    一般形式:
        fsancf(文件类型指针,格式字符串,输入列表)
eg:fscanf(fp,"%d",&i);
    g.fread函数
函数的作用是从fp所指的文件中读入count次,每次读size字节,读入的信息存在buffer地址中。
    一般形式:
        fread(buffer,size,count,fp);
    h.fwrite函数
函数的作用是将buffer地址开始的信息输出count次,每次写size字节到fp所指的文件中。
    一般形式:
        fwrite(buffer,size,count,fp);
参照说明:
    buffer:一个指针。对于fwrite来说就是要输出数据的地址(起始地址);对于fread来说是所要读入的数据存放的地址;
    size:要读写的字节数;
    count:要读写多少个size字节的数据项;
    fp:文件型指针;
##文件的定位
    在对文件进行操作时往往不需要从头开始,只需对其指定的内容进行操作,这时就需要使用文件定位函数来实现对文件的随机读取。
    a.fseek函数
函数的作用是移动文件内部位置指针。其中,“文件类型指针”指向被移动的文件:“位移量”表示移动的字节数,要求位移量是long型数据,以便在文件长度大于64KB时不会出错。当用常量表示位移量时,要求加后缀“L”;参数“起始点”表示从何处开始计算位移量,规定的起始点有2种:文件首((0)SEEK_SET)、文件当前位置((1)SEEK_CUR)和文件尾((2)SEEK——END)。
    一般形式:
        fseek(文件类型指针,位移量,起始点);
注意:fseek函数一般用于二进制文件,在文本文件中由于要进行转换,往往计算位置会出现错误。
    b.rewind函数
函数的作用是使位置指针重新返回文件的开头,该函数没有返回值。
    一般形式:
        int rewind(文件类型指针);
    c.ftell函数
函数的作用是得到流式文件中的当前位置,用相对与文件开头的位移量来表示。当ftell函数返回值为-1L时,表示出错。
    一般形式:
        long ftell(文件类型指针);


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值