文件操作

Posted lemongirl

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了文件操作相关的知识,希望对你有一定的参考价值。

一.文件的打开与关闭

 1.定义文件指针的一般形式:FILE *指针变量标识符

 2.C语言中有三个特殊的文件指针无需定义、打开可直接使用:

   stdin:标准输入,默认为当前终端(键盘)

     我们使用的scanf、getchar、函数默认从此终端获得数据

   stdout:标准输出,默认为当前终端(屏幕)

     我们使用的printf、puts函数默认输出信息到此终端

   stderr:标准出错,默认为当前终端(屏幕)

     当我们程序出错或使用perror函数时信息打印在此终端

 3.打开文件

   FILE *fp = NULL;

   fp = fopen(文件名,文件打开方式);

   ? 文件名:要操作的文件的名字,可以包含路径信息

   ? 文件打开方式:"读"、"写"、"文本"、"二进制"等

   ? fp文件指针:指向被打开的文件,失败返回空,成功返回相应指针

   例如:FILE *fp = NULL;

      fp = fopen("test.txt","r");

      if(fp == NULL)

       printf("File open error\n");

 4.文件打开的几种方式:读写权限:r  w  a  +

  r:以只读方式打开文件

    文件不存在,返回NULL

    文件存在,返回文件指针,进行后续的读操作

  w:以只写方式打开文件

    文件不存在,以指定文件名创建此文件

    若文件存在,清空文件内容,进行写操作

  a:以追加方式打开文件

    文件不存在,以指定文件名创建此文件(同w)

    若文件存在,在文件的结尾处进行写操作

  +:同时以读写打开打开指定文件

模式(b可以省略) 功能
r或rb 以只读方式打开一个文本文件(不创建文件)
w或wb 以写方式打开问价(使文件长度截断为0字节,创建一个文件)
a或ab 以添加方式打开问价,即在末尾添加内容,当文件不存在时,创建问价用于写
r+或rb+ 以可读、可写的方式打开文件(不创建新文件)
w+或wb+ 以可读、可写的方式打开文件(使文件长度为0字节,创建一个文件)
a+或ab+ 以添加方式打开文件,打开文件并在末尾更改文件(如果文件不存在,则创建文件)

 5.关闭文件

   ? 调用形式:fclose(文件指针);

    文件指针:指向要关闭的文件

   ? 返回值:关闭文件成功,返回值为0

         关闭文件失败,返回值非0

    例如:FILE *fp = NULL;

       fp = fopen("test.txt","r");

       fclose(fp);

二.文件的顺序读写

 1.字节读写函数:fgetc()和fputc()

  ? ch = fgetc(fp);  //读一个字节

    从指定文件读一个字节赋给ch

    文本文件:读到文件末尾返回EOF(EOF值为1)

    二进制文件:读到文件结尾,使用feof判断结尾

  ? fputc(ch,fp);  //写一个字节

    把ch变量中的值(一个字节)写到指定的问价

    如果输出成功,则返回输出的字节

    如果输出失败,则返回一个EOF

 2.字符串读写函数:fgets()和fputs()

  ? fgets(str,n,fp);  //读一个字符串

    从fp指向的文件中读入n-1个字符保存在str指向的内存中,‘str为存放数据的首地址

    在读入n-1个字符之前遇到换行符或EOF,读入提前结束,在最后加一个‘\0

  ? fputs("china",fp);  //写一个字符串

    向fp指定的文件写一个字符串

    第一个参数可以是字符串常量、字符数组名或字符指针,字符串末尾的‘\0‘不会写到文件

 3.数据块读写函数:fread()和fwrite()

  ? fwrite(buffer,size,count,fp);  //将buffer中的内容写入到fp所指向的文件中

  ? fread(buffer,size,count,fp);  //将fp所指向的文件中的内容读入到buffer内存中

    参数说明:buffer:指向存储数据空间的首地址的指针

         size:一次读写的数据库大小

         count:要读写的数据块个数

         fp:指向要进行写操作的文件指针

    返回值:实际读写的数据块数,不是总数据大小,不到1块返回0,不到2块返回1

 4.格式化读写函数:fscanf()和fprintf()

  ? fprintf(文件指针,格式字符串,输出列表);

    例如:fprintf(fp,"%d,%6.2f",i,f);  //将int型变量i和float型变量的值按%d和%6.2f的格式输出到fp指向的文件中

  ? fscanf(文件指针,格式字符串,输入列表);

    例如:fscanf(fp,"%d,%f",&i,&f);  //从磁盘文件中读取整型值存到变量i中,读取事型值存到变量f中

三.文件的随机读写

 1.ftell函数

 

 2.rewind函数

 

 3.fseek函数

 

四.文件的出错监测

 1.文件结束检测函数

 

 2.读写文件出错检测函数ferror

 

 3.文件出错标志和文件结束标志置0函数clearerr

 

以上是关于文件操作的主要内容,如果未能解决你的问题,请参考以下文章

python 文件操作python 文件操作

文件读写操作

文件操作

文件操作

Python文件操作

python文件操作