关键词搜索

源码搜索 ×
×

C语言之文件操作

发布2023-02-24浏览764次

详情内容

目录

一、什么是文件?

二、C语言如何操作文件 

 1.操作方式

2.文件指针

        2.1 定义文件指针

      2.2文件的打开与关闭

    2.3文件的顺序读写

      2.3文件的随机读写

总结


一、什么是文件?

在电脑磁盘的上的文件。在程序设计中,分为两种:程序文件数据文件

 程序文件:源程序文件(后缀为.c) 目标文件(windows环境后缀为.obj) 可执行程序(Windows环境后缀为.exe)

数据文件:程序运行时读写的数据,例如程序运行需要从中读取数据的文件或者输出内容的文件


二、C语言如何操作文件 

 1.操作方式

 在C程序里,文件分为 A.文本文件(存放字符/文字的文件.txt)
                                   B:二进制文件(.data)把结构体的信息写入的文件被称为二进制文件   

对文档的操作方式主要有2种:

                读操作:从文件里面把文件的内容取出来,并输出到屏幕(不会改变文件的内容)
                写操作:把一些内容往文件里面写入(会改变文件的内容)

 注:每个被使用的文件都在内存中开辟了一个相应的文件信息区,用来存放文件的相关信息(如文件的名字,文件状态及文件当前的位置等)。这些信息是保存在一个结构体变量中的。该结构体类型是有系统声明的,取名FILE。 


2.文件指针

         我们已经知道了,C语言对于文件的操作,那我们具体如何操作呢?                                                 我们可以使用文件指针,顾名思义,文件指针是指向文件的指针,存放的是文件首地址。

        2.1 定义文件指针

           创建一个FILE*的指针变量

FILE* pf;文件指针变量

          定义pf是一个指向FILE类型数据的指针变量。可以使pf指向某个文件的文件信息区(是一个         结构体变量)。通过该文件信息区中的信息就能够访问该文件。也就是说,通过文件指针变           量能够找到与它关联的文件。
 


      2.2文件的打开与关闭

          文件在读写之前,需要打开文件,使用结束后应该关闭文件
          ANSIC 规定使用fopen函数来打开文件,fclose来关闭文件。

  1. //打开文件
  2. FILE *pf = fopen("要打开的文件名","打开方式");
  3. //关闭文件
  4. int fclose ( pf );

        打开方式,便是读、写等操作

 代码实例:

  1. #include <stdio.h>
  2. int main ()
  3. {
  4. //打开文件 使用"w",如果不存在myfile.txt,则会创建此文件
  5. FILE *pFile = fopen ("myfile.txt","w");
  6. //文件操作
  7. if (pFile!=NULL)
  8. {
  9. //fputs是将字符串输入到文件当中。
  10. fputs ("fopen example",pFile);
  11. //关闭文件
  12. fclose (pFile);
  13. }
  14. return 0;
  15. }

    2.3文件的顺序读写

          在之前的代码里,我们可以看见一个函数fputs,该函数是文本行输出函数,在C程序里,任       何数据不会直接输出到对应的设备,而是会通过三个流,对应地传递过去。

        顺序读写步骤:打开、读取(只能从头开始读写)、关闭

         而同样,有些函数在传输的时候也会有限制,并不适合所有的流。 顺序读写的函数名和传输     限制如下:

举个例子 :

  1. struct S
  2. {
  3. char name[20];
  4. int age;
  5. float score;
  6. };
  7. //测试二进制的写函数:fread
  8. int main()
  9. {
  10. struct S s = { 0};
  11. // 文件使用 “只读” 且是二进制
  12. FILE* pf = fopen("test.txt", "rb");
  13. if (NULL == pf)
  14. {
  15. perror("fopen");
  16. return 1;
  17. }
  18. //读文件 freed也是二进制输入
  19. fread(&s, sizeof(struct S), 1, pf);
  20. printf("%s %d %f\n", s.name, s.age, s.score);
  21. //关闭文件
  22. fclose(pf);
  23. pf = NULL;
  24. return 0;
  25. }

 如代码,重点强调:FILE* 指针访问的是文件信息区的地址,并且这些信息都是存放在结构体       其他函数用法就不一一解释了,可以通过MSDN查找,学习。


      2.3文件的随机读写

             随机读写,就是想读哪个位置就读哪个位置,指哪打哪的意思。

    1.fseek函数         

     根据文件指针的位置和偏移量来定位文件指针

                                文档指针       光标移动位      
使用:int fseek ( FILE * stream, long int offset, int origin )

       origin 的值           光标位置
       SEEK_SET            文件开头
       SEEK_CUR          文件指针当前位置
        SEEK_END            文件结尾

 代码实例:

  1. #include <stdio.h>
  2. int main()
  3. {
  4. FILE* pFile;
  5. pFile = fopen("example.txt", "wb");
  6. fputs("This is an apple.", pFile);
  7. fseek(pFile, 11, SEEK_SET);
  8. fputs("sam", pFile);
  9. fclose(pFile);
  10. return 0;
  11. }

代码详解图: 

 

2.ftell函数

返回文件指针相对于起始位置的偏移量

                       文档指针
long int ftell ( FILE * stream );

 3 rewind
让文件指针的位置回到文件的起始位置

void rewind ( FILE * stream );

       随机读写函数的总结: 

                     第一个函数是控制光标移动                                                                                                                 第二个函数是返回光标移动的偏移量,                                                                                                            第三个函数是光标回到初始位置


总结

           文档操作,主要弄清楚以下问题

           文件的分类,C语言如何访问文档,又该如何操作,文件的信息存放在哪?以什么方式存放。

            上述问题,全在博客之中,有着清晰明了的讲解,一点点深入了解文件 

            

                                                                                                                 ---------来自菜鸟TQ02

相关技术文章

点击QQ咨询
开通会员
返回顶部
×
微信扫码支付
微信扫码支付
确定支付下载
请使用微信描二维码支付
×

提示信息

×

选择支付方式

  • 微信支付
  • 支付宝付款
确定支付下载