天天看点

(C语言)文件操作

之前经常遇到C语言中文件的操作,经常因奇奇怪怪的函数而感到一头雾水,终于今晚有幸上了下程序设计基础课,对文件的操作有了一次系统性学习的体验,下面就稍作记录,以便查阅

文件类型指针

typedef struct
{  short level;        //缓冲区“满”或“空”的程度
  unsigned flags;      //文件状态标志
  char fd;          //文件描述符
  unsigned char hold;    //如缓冲区无内容不读取字符
  short bsize;        //缓冲区的大小
  unsigned char*buffer;  //数据缓冲区的位置
  unsigned char*curp;    //文件位置标记指针当前的指向
  unsigned istemp;    //临时文件指示器
  short token;        //用于有效性检查
}FILE;      

FILE *fp;//定义一个指向FILE类型数据的指针变量

用fopen函数打开数据文件

FILE*fp;

//定义一个指向文件的指针变量fp

fp=fopen(″a1″,″r″);

//将fopen函数的返回值赋给指针变量fp

(C语言)文件操作

用fclose函数关闭数据文件

fclose(fp);顺序读写数据文件

读写字符

(C语言)文件操作

读写字符串

(C语言)文件操作

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

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

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

例如:

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

fscanf (fp,″%d,%f″,&i,&f);

//磁盘文件上如果有字符“3,4.5”,则从中读取整数3送给整型变量i,读取实数4.5送给float型变量f

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

fread(buffer, size, count, fp);

fwrite(buffer, size, count, fp);

buffer: 是一个地址。对fread,它是用来存放从文件读入的数据的存储区的地址。对fwrite,是要把此地址开始的存储区中的数据向文件输出(以上指的是起始地址)。

size: 要读写的字节数。

count: 要读写多少个数据项(每个数据项长度为size)。

fp: FILE类型指针。

例如:

float f[10];

fread(f,4,10,fp); //从fp所指向的文件读入10个4个字节的数据,存储到数组f中

随机读写数据文件

rewind(文件指针);

使文件位置标记指向文件开头,无返回值

fseek(文件类型指针, 位移量, 起始点);

用fseek函数改变文件位置标记

“起始点”:用0,1或2代替,0代表“文件开始位置”,1为“当前位置”,2为“文件末尾位置”

“位移量”:指以“起始点”为基点,向前移动的字节数(长整型)

例如:

(C语言)文件操作

用ftell函数测定文件位置标记的当前位置

ftell函数的作用是得到流式文件中文件位置标记的当前位置,用相对于文件开头的位移量来表示。如果调用函数时出错(如不存在fp指向的文件),ftell函数返回值为-1L。

例如:

(C语言)文件操作