C语言中文件相关操作

C语言文件指针(类似于 JAVA中 File file = new File();)

在C语言中用一个指针变量指向一个文件,这个指针称为文件指针
 
        格式:
            FILE * 指针变量标识符;

 

文件的打开 (fopen函数)

        fopen函数用来打开一个文件,其调用的一般形式为:
            文件指针变量名 = fopen (文件名, 使用文件方式);
 
        其中:
            "文件指针名"必须是被说明为FILE 类型的指针变量;
            "文件名" 是被打开文件的文件名
            "使用文件方式" 是指文件的类型和操作要求
            "文件名" 是字符串常量或字符串数组

  

文件的关闭函数(fclose函数)

        文件一旦使用完毕,应用关闭文件函数把文件关闭,以避免文件的数据丢失等错误
 
        fclose 函数调用的一般形式是:
            fclose(文件指针);
        注意:正常完成关闭文件操作时,fclose函数返回值为0 .如返回非零值则表示有错误发生
            如果文件写操作时,没有进行关闭,可能会导致文件写入失败

  

例:

        操作文件的步骤:
        1) 引入头文件 stdio.h
 
        2) 建立文件指针
 
            FILE *fp = NULL;
        3) 打开文件
            fopen(文件名,操作方式);
            fp=fopen("a.txt","r");//r 是操作方式
            //如果打开成功,会返回文件的首地址
                     失败,会返回NULL;
 
        4) 操作文件
 
            
        5) 关闭文件
            fclose(文件指针);

 

文件的使用方式:

        r: 打开一个已经存在的文件,准备从文件中读取数据.不能向文件写数据
        w: 创建一个新文件,准备向文件写入数据.不能从文件中读取数据,如果文件已经存在,这个文件会被覆盖
        a: 打开一个已存在的文件,准备在文件尾部追加数据.不能从文件中读取数据,如果文件不存在,则创建这个文件准备写入数据
        r+: 打开一个已存在的文件,准备读写.即可以读取数据,也可以写入数据
 
        w+: 创建一个新文件,准备读写,如果文件已存在,则覆盖文件
        a+: 等价于a,但可以从文件中读取数据
        t:  打开一个文本文件
        b:  打开一个二进制文件

 

文件的注意事项:

        1)文件使用方式由 r、w、a、t、b和+ 六个字符拼成,各字符的含义是:
            r (read) :读
            w (write) :写
            a (append):追加
            t (text): 文本文件,可省略不写
            b (banary): 二进制文件
            + : 读和写
 
        2) 凡用"r" 打开一个文件时,该文件必须已经存在,且只能从文件读出
        3) 用"w" 打开的文件只能向该文件写入.若打开的文件不存在,则以指定的文件名建立该文件,若打开的文件已经存在,则将该文件删去,重建一个新文件
        4) 若要向一个已存在的文件追加新的信息,只能用"a"方式打开文件.如果文件不存在,也会自动帮我们创建
        5) 在打开一个文件时,如果出错,fopen将返回一个空指针值NULL。 在程序中可以用这一信息来判别是否完成打开文件的工作,并作相应的处理.因此常用以下程序段打开文件:
            
            例如:
                //定义文件指针
                FILE *fp = fopen("a.txt","r");
 
                if(fp!=NULL){
                    //文件打开成功
                }else{
                    //文件打开失败
                    printf("文件读取失败!按任意键退出~");
                    getch();//等待用户输入一个字符后,再退出
                    exit(1);//程序退出
                }
            这段程序的意义是,如果返回的指针为空,表示不能打开a.txt文件,则给出提示信息,下一行getch()的功能是从键盘输入一个字符,但不在屏幕上显示.在这里,该行的作用是等待,只有当用户从键盘敲任一建时,程序才会继续执行,因此用户可利用这个等待时间阅读出错提示.敲键后执行exit(1)退出程序
 
        6) 把一个文本文件读取内存时,要将ASCII码转换成二进制码,而把文件以文本方式写入磁盘时,也要把二进制码转换成ASCII码,因此文本文件的读写要花费较多的转换时间.对二进制文件的读写不存在这种转换
        7) 标准输入文件(键盘),标准输出文件(显示器),标准出错输出(出错信息)是由系统打开的,可直接使用

  

字节读写函数:fgetc和fputc

一次读取一个字节 读取到EOF 表示到达了文件末尾则读取结束

  

字符串读写函数:fgets 和 fputs

        fputs有个返回值 ,返回的内容代表当前写入的字数
 
        fgets("数组名称","读取的字节数","文件指针");
 
        注意:
            1) fgets读取的时候,当文件内容读取完毕后,会给字符串加上结束符\0
            2) fgets读取的时候,遇到\n或者EOF,读取结束

  

数据块读写函数 fread 和 fwrite

        C语言还提供了用于整块数据的读写函数.可用来读写一组数据,如一个数组元素,一个结构变量的值等
        
        读数据块函数调用的一般形式为:
            fread(buffer,size,count,fp);
        写数据块函数调用的一般形式为:
            fwrite(buffer,size,count,fp);
        
        其中:
            buffer:是一个指针,在fread函数中,它表示存放输入函数的首地址.在fwrite函数中,它表示存放输出数据的首地址
            size: 表示函数块的字节数
            count: 表示要读写的数据块块数
            fp:表示文件指针

  

格式化写入 fprintf 和 fscanf

    //使用fprintf函数,格式化写入数据到文件中
        fprintf(fp,"%d#%d",a,b);
    //以特定的格式写入数据
        fscanf(fp,"%d#%d",a,b);

  

文件的随机读写实现

实现随机读写的关键是按要求移动位置指针,这成为文件的定位
 
    移动文件内部位置指针的函数主要由两个 ,即 rewind() 和 fseek()
 
    fseek函数 和 rewind函数
        rewind(文件指针)
            把文件指针重新制定文件的首位置
        fseek函数
        格式 :
            fseek(文件指针,位移量,起始点);
 
            文件指针: 指向被移动的文件
            位移量: 表示移动的字节数,要求位移量是long型数据,以便在文件长度大于64KB是不会报错,当用常量表示位移量时,要求加后缀 "L"
            起始点: 表示从何处开始计算位移量,规定的起始点有三种:文件首,当前位置 和文件尾
                文件首 SEEK_SET 数字  0
                当前位置 SEEK_CUR 数字 1
                文件末尾 SEEK_END 数字 2
        例如:
            fseek(fp,100L,0);
            其意义是把位置指针移到离文件首100个字节处
 
        注意:
            fseek函数一般用于二进制文件,在文本文件中由于要进行转换,故往往计算的位置会出现错误
 
 
 文件结束检测函数 feof函数
 
        格式:
            feof(文件指针);
        功能:
            判断文件是否处于文件结束位置,如文件结束,则返回为1,否则为0
 
        注意:
            这个方法会多执行一次,一般首选 EOF
 
 检测错误信息: ferror 函数
            ferror(文件指针);
 
 文件出错标志和文件结束标志置0函数
 
        clearerr函数调用格式:
            clearerr(文件指针)
        作用:
            本函数用于清除出错标志和文件结束标志,使它们为0值

  

posted @ 2015-05-13 09:32  王世桢  阅读(271)  评论(0编辑  收藏  举报