C语言的文件操作

一、C文件的有关基本知识

  • 程序设计中主要用到两种文件
    • 程序文件:其内容是程序代码
    • 数据文件
      • 文本文件(ASCII文件)
      • 二进制文件
  • stdio.h头文件中有关于文件类型FILE的声明,使用时一般都是设置一个指向FILE类型变量的指针变量

二、打开与关闭文件

2.1 用fopen函数打开数据文件

  • fopen函数的调用方式为,fopen(文件名,使用文件方式);,例如:fopen("data.txt", "r");
  • 打开成功,fopen返回一个指向文件的指针,否则返回NULL
  • 常用的使用文本文件方式如下
    • "r":只能从文件中读数据,该文件必须先存在,否则打开失败
    • "w":只能向文件写数据,若指定的文件不存在则创建它,如果存在则先删除它再重建一个新文件
    • "a":向文件增加新数据(不删除原有数据),若文件不存在则打开失败,打开时位置指针移到文件末尾
    • "r+":可读/写数据,该文件必须先存在,否则打开失败
    • "w+":可读/写数据,用该模式打开新建一个文件,先向该文件写数据,然后可读取该文件中的数据
    • "a+":可读/写数据,原来的文件不被删去,位置指针移到文件末尾
  • 打开二进制文件的模式与打开文本文件的含义是一样的,不同的是模式名称里面多一个字母'b’,“rb”“wb”“ab”“rb+”“wb+”“ab+”

2.2 用fclose函数关闭数据文件

  • 在使用完一个文件后应该关闭它,以防止它再被误用,如果不关闭文件将会丢失数据
  • fclose函数调用的一般形式为,fclose(文件指针);
  • 关闭成功,返回值为0,否则返回EOF(-1)

三、顺序读写数据文件

3.1 向文件读写字符

  • fgetc(fp),从fp指向的文件读入一个字符,读成功,返回所读字符;失败则返回EOF
  • fputc(ch, fp),把字符ch写到fp指向的文件中,输出成功,返回值为输出的字符;失败则返回EOF
  • 使用feof(fp)可以检查文件读写位置标记是否移到文件末尾,即文件是否结束,如果是,则函数返回值为1,否则为0

3.2 向文件读写字符串

  • fgets(str, n, fp),从fp指向的文件读入一个长度为n-1的字符串,存放到字符数组str中,读成功,返回地址str;失败则返回NULL
  • fputs(str, fp), 把str所指向的字符串写到fp指向的文件中,输出成功返回0,否则返回非0值

3.3 用格式化的方式读写文件

  • 用fprintf函数和fscanf函数对文件进行格式化输入输出
  • 它们的作用和printf、scanf函数相仿,都是格式化读写函数,只有一点不同:fprintf和fscanf函数的读写对象不是终端而是文件
  • 例如 
    • fprintf(fp, "%d, %s, %c", num, name, gender);
    • fscanf(fp, "%d, %s, %c", &num, name, &gender);

3.4 用二进制方式向文件读写一组数据

  • 当要求一次存取一组数据(如,一个数组、一个结构体变量的值),fread和fwrite函数可以解决该类问题
  • 它们的调用形式一般为:
    • fread(buffer, size, count, fp);
    • fwrite(buffer, size, count, fp);
      • buffer:对于fread来说,指的是读入数据的存放地址;对于fwrite来说,是要输出数据的地址
      • size:读写数据时,每组数据的大小
      • count:读写多少组数据
      • fp:文件指针
posted @ 2021-10-02 19:58  bky-16  阅读(336)  评论(0编辑  收藏  举报