标准C程序设计(七)

  12 文件管理
    12.1 概述 
在C语言中,有两种不同的方法来执行文件操作。第一种称为低级I/O,使用UNIX系统调用。第二种指的是高级I/O,使用C语言的标准I/O库函数。
表 12.1
函数名操作
fopen创建一个文件,打开一个已有的文件
fclose关闭一个已打开的文件
getc从文件中读取一个字符
putc往文件中写入一个字符
getw从文件中读取一个整数
putw往文件中写入一个整数
fscanf从文件中读取一个数据集
fprintf往文件中写入一个数据集
fseek把位置设置在文件中的期望点
ftell给出处在文件中的当前位置(从文件头算起的字节数)
rewind把位置设置在文件开头
      12.2 定义并打开文件
要把数据存储在辅存的文件中,必须向操作系统指定文件的某些信息:
  • 文件名:是一个字符串,包括基本名称和可选扩展名。如:store,student.c;
  • 数据结构:文件的数据结构定义为FILE(在标准I/O函数定义库中)。
  • 打开方式:当打开一个文件时,必须指定要对该文件进行何种操作。
下面是声明并打开一个文件的一般格式:FILE *fp;fp = fopen("filename", "mode");
表 12.2

文件使用方式

含义

r”(只读)

为输入打开一个文本文件

w(只写)

为输出打开一个文本文件

a(追加)

想文本文件尾增加数据

rb(只读)

为输入打开一个二进制文件

wb(只写)

为输出打开一个二进制文件

ab(追加)

向二进制文件尾增加数据

r+(读写)

为读写打开一个文本文件

w+(读写)

为读写打开一个新的文本文件

a+(读写)

为读写打开一个文本文件

rb+(读写)

为读写打开一个二进制文件

wb+(读写)

为读写建立一个新的二进制文件

ab+(读写)

为读写打开一个二进制文件

t(文本文件)可以省略不写


常用文件操作函数 http://zhaoyuqiang.blog.51cto.com/6328846/1296902
C语言文件的读写http://see.xidian.edu.cn/cpp/html/107.html
12.3 随机访问文件
  1. ftell函数以一个文件指针为参数,返回一个long类型的数字,它对应于当前的位置。在保存文件的当前位置(这样在程序的后面就可以使用)时,该函数很有用。形式如下:n = ftell(fp);其中n给出了当前位置的相对偏移量(以字节为单位)
  2. rewind函数以一个文件指针为参数,把指针位置重置到文件的开头。形式如:rewind(fp);此时n = ftell(fp);语句的值为0,因为rewind把文件指针设置在了文件的开头。该函数不用反复关闭和打开文件,就可多次读取一个文件。只要是打开一个文件用于读或写入数据,就会隐式的运行rewind函数。
  3. fseek函数用于把文件指针移到指定的文件位置,其形式:fseek(ptr, offset, position);其中,ptr为文件指针,offset为long型整数或变量,position为一整数。offset指定从position开始计算的要移动的位置(以字节为单位)。position可以是以下三个值:
含义
0文件的开头
1当前位置
2文件的末尾

          offset可以是正数(表示向前移动),或负数(表示向后移动)。
表12.3  fseek函数
语句含义
fseek(fp, 0L, 0);跳到文件开头(类似于rewind函数)
fseek(fp, 0L, 1);停留在当前位置(很少使用)
fseek(fp, 0L, 2);跳过文件剩余的字符,跳到文件末尾
fseek(fp, m, 0);在文件中前进(m+1)个字节
fseek(fp, m, 1);从当前位置前进m个字节
fseek(fp, -m, 1);从当前位置后退m个字节
fseek(fp, -m, 2);从文件末尾后退m个字节
      当操作成功时,fseek返回0。如果试图将文件指针移出文件的边界,将产生一个错误,返回-1。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值