首页 > 代码库 > 【C语言疯狂讲义】(十六)C语言文件操作

【C语言疯狂讲义】(十六)C语言文件操作

1、文件的基本概念

 

      存储外部介质上得数据集,数据集有一个名称就是文件名 

 

      文件的分类:

 

        1)用户角度:普通文件和设备文件

        2)存储的内容:

 

             ascii文件(文本文件):

 

             存储的流程:根据文本找到其对应的ascii码值---->转为二进制-->

                       写到文件中

 

             读取流程: 二进制-->10进制-->找对应的字符-->显示出来

 

 

 

             二进制文件:

 

                       二进制数据的存取

 

      文件的操作流程:

 

            1)导入头文件  stdio.h

 

            2) 定义文件指针

 

            3)打开文件

  

            4)操作文件

 

            5)关闭文件

 

     文件操作原理

  

 

 

 

   2、文件指针

 

           FILE 结构体

  

           FILE *fp;  结构体指针

 

           作用:存储一个文件的首地址,指向一个文件

 

 

   3、文件的打开和关闭

 

 

           打开  fopen(文件名,操作方式);

 

                 fopen("a.txt","r");  

                 //a.txt默认的去products目录去找,/Users/apple/Library/Developer/Xcode/DerivedData/C15-综合项目-cmassyrpkwjxularuygrjqhojbwj/Build/Products/Debug

 

                 fopen("/Users/apple/Desktop/a.txt","r");

 

                 操作方式:

 

                  r    w    a    b       +      t

                       追加  二级制   读写   文本

 

                  w  -- 写入文件的时候,如果文件不存在,则创建

 ‘                                          存在   则覆盖

 

                  r+   w+   wb+  a+

 

                 关闭文件:

 

                  fclose(文件指针);

 

 

   4、文件操作的函数

 

        1) 字符型数据的读取和写入

 

              写入:

              fputc(‘字符‘,文件指针);

            

               char c=‘A‘;

               fputc(c,fp);

 

              读取:

 

              char ch = fgetc(fp);

 

        2)字符串类型数据的读取和写入

 

              写入:

              fputs(数组名/指针名,fp);  //fputs(数组名,stdout);

 

              读取:

              fgets(数组名/指针名,长度,fp);

 

                   fgets实际读取的字符个数是长度-1

 

                   1)遇到\n 结束,遇到EOF也会结束

 

        3)数据块的读取和写入

 

              写入:

 

              fwrite(写入的变量地址,数据块的大小,块数,fp);

 

               int a =123;

               fwrite(&a,sizeof(int),1,fp);

 

               struct Student stu1;

               fwrite(&stu1,sizeof(struct Student),1,fp);

 

              读取:

                struct Student s1;

               fread(变量的地址,数据块的大小,块数,fp)

 

                fread(&s1,sizeof(struct Student),1,fp);

                //使用s1进行输出

 

        4)格式化的读取和写入

 

                写入数据和读取数据按照一定的格式进行

 

                写入:

                 fprintf(文件指针,"格式化的字符串",变量列表);

 

                 fprintf(fp,"%d,%c,%d#",10,‘a‘,20);

 

                         10,a,20#10,a,20#10,a,20#

 

                读取

 

                 fscanf(fp,"%d,%c,%d#",&a,&ch,&b);

 

                 fprintf(fp,"%d,%s,%d",20,"abc",30);

 

                 fscanf(fp,"%d,%s,%d",&a,str,&b);

 

                           str = abc,30

 

                 改成:

 

                 fprintf(fp,"%d,%d,%s",20,20,"abc");

                 

                 fscanf(fp,"%d,%d,%s",&a,&b,str);

 

 

   5、文件的随机读取

  

                设定文件的头指针的位置

 

                默认fp是指向文件的首地址

 

                1rewind(fp);    //fp指向首地址

 

                2fseek(fp,偏移的距离,起始点);

 

                   fseek(fp,32L,SEEK_SET); //从文件头部开始,偏移32个字节

 

 

 

   6、文件的检测函数

 

                feof()   用来检测文件是否到了末尾

 

                        如果没有到末尾

                               到末尾 1

                缺点:多执行一次

 

 

   7C语言的其他的头文件的介绍

 

                 math.h

                 stdio.h

                 stdlib.h

                 time.h

                 string.h

【C语言疯狂讲义】(十六)C语言文件操作