c语言(二十二,文件操作②)
2011年10月23日
5.文件的随机读写函数
前面介绍的文件的字符/字符串读写,均是进行文件的顺序读写,即总是从文件的开头开始进行读写。这显然不能满足我们的要求,C语言提供了移动文件指针和随机读写的函数,它们是:
(1).移动文件指针函数:
long ftell(FILE *stream);
int rewind(FILE *stream);
fseek(FILE *stream,long offset,int origin);
函数ftell()用来得到文件指针离文件开头的偏移量。当返回值是-1时表示出错。
rewind()函数用于文件指针移到文件的开头,当移动成功时,返回0,否则返回一个非0值。
fseek()函数用于把文件指针以origin为起点移动offset个字节,其中origin指出的位置可有以下几种:
origin 数值 代表的具体位置
SEEK_SET 0 文件开头
SEEK_CUR 1 文件指针当前位置
SEEK_END 2 文件尾
例如:
fseek(fp,10L,0);
把文件指针从文件开头移到第10字节处,由于offset参数要求是长整型数,故其数后带L。
fseek(fp,-15L,2);
把文件指针从文件尾向前移动15字节。
(2).文件随机读写函数
int fread(void *ptr,int size,int nitems,FILE *stream);
int fwrite(void *ptr,int size,int nitems,FILE *stream);
fread()函数从流指针指定的文件中读取nitems个数据项,每个数据项的长度为size个字节,读取的nitems数据项存入由ptr指针指向的内存缓冲区中,在执行fread()函数时,文件指针随着读取的字节数而向后移动,最后移动结束的位置等于实际读出的字节数。该函数执行结束后,将返回实际读出的数据项数,这个数据项数不一定等于设置的nitems,因为若文件中没有足够的数据项,或读中间出错,都会导致返回的数据项数少于设置的nitems。当返回数不等于nitems时,可以用feof()或ferror()函数进行检查。
fwrite()函数从ptr指向的缓冲区中取出长度为size字节的nitems个数据项,写入到流指针stream指向的文件中,执行该操作后,文件指针将向后移动,移动的字节数等于写入文件的字节数目。该函数操作完成后,也将返回写入的数据项数。
二、非标准文件的读写
这类函数最早用于UNIX操作系统,ANSI标准未定义,但有时也经常用到,DOS 3.0以上版本支持这些函数。它们的头文件为io.h。
由于我们不常用这些函数,所以在这里就简单说一下。
1.文件的打开和关闭
open()函数的作用是打开文件,其调用格式为:
int open(char *filename, int access);
该函数表示按access的要求打开名为filename的文件,返回值为文件描述字,其中access有两部分内容:
基本模式和修饰符, 两者用 (或)方式连接。修饰符可以有多个, 但基本模式只能有一个。
access的规定
--------------------------------------------------------
基本模式 含义 修饰符 含 义
--------------------------------------------------------
O_RDONLY 只读 O_APPEND 文件指针指向末尾
O_WRONLY 只写 O_CREAT 文件不存在时创建文件, 属性按基本模式属性
O_RDWR 读写 O_TRUNC 若文件存在, 将其长度缩为0, 属性不变
O_BINARY 打开一个二进制文件
O_TEXT 打开一个文字文件
---------------------------------------------------------
open()函数打开成功, 返回值就是文件描述字的值(非负值), 否则返回-1。
close()函数的作用是关闭由open()函数打开的文件, 其调用格式为:
int close(int handle);
该函数关闭文件描述字handle相连的文件。
2.读写函数
int read(int handle, void *buf, int count);
read()函数从handle(文件描述字)相连的文件中, 读取count个字节放到buf所指的缓冲区中,
返回值为实际所读字节数, 返回-1表示出错。返回0 表示文件结束。
write()函数的调用格式为:
int write(int handle, void *buf, int count);
write()函数把count个字节从buf指向的缓冲区写入与handle相连的文件中, 返回值为实际写入的字节数。
3.随机定位函数
lseek()函数的调用格式为:
int lseek(int handle, long offset, int fromwhere);
该函数对与handle相连的文件位置指针进行定位,功能和用法与fseek()函数相同。
tell()函数的调用格式为:
long tell(int handle);
该函数返回与handle相连的文件现生位置指针, 功能和用法与ftell()相同。
发表评论
-
Lamp开发平台环境搭建
2012-01-20 09:48 643Lamp开发平台环境搭建 2010年08月03日 背景介 ... -
Flex 和 Ogre
2012-01-20 09:48 600Flex 和 Ogre 2011年04月12日 最近和赖 ... -
关于 OGRE 与 OSG 的简单比较
2012-01-20 09:48 1246关于 OGRE 与 OSG 的简单 ... -
SciTE中文配置说明
2012-01-20 09:48 832SciTE中文配置说明 2010年09月01日 SciT ... -
从solaris向linux移植应用程序的技术指导
2012-01-20 09:48 697从solaris向linux移植应用 ... -
幼儿园安全工作考核、奖惩制度
2012-01-19 14:53 1265幼儿园安全工作考核、奖惩制度 2011年12月25日 为 ... -
幼儿园教师奖惩制度
2012-01-19 14:53 558幼儿园教师奖惩制度 20 ... -
幼儿园教职工制度
2012-01-19 14:53 556幼儿园教职工制度 2011年06月11日 一、考勤制度: ... -
幼儿园老师奖惩制度
2012-01-19 14:53 1015幼儿园老师奖惩制度 2012年01月06日 ... -
幼儿园教职工奖惩制度
2012-01-19 14:53 554幼儿园教职工奖惩制度 ... -
C语言自学教程――二十三、《文件操作??下》
2012-01-17 04:36 584C语言自学教程――二十 ... -
探索Linux内核空间文件IO实现
2012-01-17 04:36 742探索Linux内核空间文件IO ... -
android 各系统区别(android 1.5- android 3.0)
2012-01-17 04:36 654android 各系统区别(android ... -
论PHP和.Net 哪个更有前景
2012-01-17 04:36 1222论PHP和.Net 哪个更有前景 2011年04月10日 ... -
IT人的10大论坛
2012-01-16 03:29 587IT人的10大论坛 2009年10 ... -
让技术改变生活 程序员的技术梦想 dotey
2012-01-16 03:29 489让技术改变生活 程序员 ... -
中国顶级黑客-----增加了李俊
2012-01-16 03:28 680中国顶级黑客-----增加 ... -
中国黑客排行榜
2012-01-16 03:28 609中国黑客排行榜 2009年1 ...
相关推荐
目的:要求熟练掌握C语言的基本知识和编辑技能; 基本掌握结构化程序设计的基本思路和方法。 要求:设计一个职工信息管理系统,使之能提供以下功能: 1、应提供一个界面来调用各个功能,调用界面和各个功能的操作...
每次运行程序可以反复猜多个数,直到操作者想停止时才结束。 (17)给小学生出加法考试题 编写一个程序,给学生出一道加法运算题,然后判断学生输入的答案对错与否,按下列要求以循序渐进的方式编程。 程序1 通过...
利用WIN-TC实现学生成绩管理系统的录入、查询、删除、统计等基本操作,使用单链表结构实现学生成绩管理,了解数据库管理的基本功能,掌握C语言中的结构体、指针、函数(系统函数、自定义函数)、文件操作等知识。...
C语言数据结构课程设计基于B树为索引的图书管理系统源码。 基本要求] (1)每种书的登记内容至少包括书号、书名、著者、现存量和总库存量等五项。 (2)作为演示系统,不必使用文件,全部数据可以都在内存存放。...
用户可以通过主菜单选择不同的操作,包括录入顾客信息、搜索菜品、结算账单、录入菜品、搜索订单等。 基本要求包括: ① 顾客信息录入:用户可以输入桌号、人数以及特殊需求,并将其保存在系统中。 ② 菜品搜索:...
(二)程序设计建议 (1)数据结构 可使用字符串数组存储每次猜对的单词模式,如: char *wordAfterGuess[]; 可使用字符数组存储猜错的字母,如: char wrongGuess[255]; (2)程序模块及功能 ①初始化模块:设定单词内容...
① 文件操作函数: fopen(文件名,文件使用方式) fclose(文件指针) fputc(字符,文件指针) //如fputc(ch,fp)把字符ch写入到指针变量fp所指向的文件当中 ② 字符操作函数: getchar() 输入一个字符 ...
一、实验要求 页面置换算法主要有:FIFO,最近最少使用调度算法(LRU),最近最不常用调度算法(LFU)...② 页面序列从指定的文本文件(TXT文件)中取出 ③ 输出:第一行:每次淘汰的页面号,第二行:显示缺页的总次数
②清除库存: 实现某本书的全部信息删除操作 ,每清除一个书号则已以凹入表的形式显示B树现状。 ③图书借阅: 如果书的库存量大于零时则执行出借,登记借阅者的借书号和姓名,显示借阅成功。如果某书库存为零,则...
2、航空订票系统问题描述:编写程序模拟航空订票系统,要求实现以下功能: ...③ 订票:无票时应能提供相关可选择的航班以继续操作(订票数据存储在数据文件中)。 ④ 退票:退票后应修改相关数据文件。
ftp ip 端口 用于上传文件至服务器或进行文件操作,默认端口为21。bin指用二进制方式传送(可执行文件进);默认为ASCII格式传送(文本文件时) route print 显示出IP路由,将主要显示网络地址Network addres,子网...
①Linux基础学习:文件类命令、压缩命令、进程命令、服务器搭建、用户管理、vim学习、gcc/g++编译、linux静态库/动态库、gdb学习、makefile基础学习、C语言文件操作类函数、C语言目录操作函数等; ②linux系统编程...
② 在对加密或解密完成的数据进行写出的时候,都是将其直接写到指定好的文件,即直接写入磁盘。这是因为,考虑到中途可能因为意外断电等原因引起操作中断,为了保护已经花费时间运算完成的数据,将其直接写入磁盘。 ...
作为演示系统,不必使用文件,全部数据可以都在内存存放。但是由于上述四项基本业务活动都是通过书号(即关键字)进行的,所以要用 B 树(2-3 树)对书号建立索引,以获得高效率。 系统应实现的操作及其功能定义如下: ...
② 在对加密或解密完成的数据进行写出的时候,都是将其直接写到指定好的文件,即直接写入磁盘。这是因为,考虑到中途可能因为意外断电等原因引起操作中断,为了保护已经花费时间运算完成的数据,将其直接写入磁盘。 ...
② 在对加密或解密完成的数据进行写出的时候,都是将其直接写到指定好的文件,即直接写入磁盘。这是因为,考虑到中途可能因为意外断电等原因引起操作中断,为了保护已经花费时间运算完成的数据,将其直接写入磁盘。 ...
第一个是文件名,第二个是操作方式,第三个是密钥,第四个是加密钥循环使用长度。其中后两个参数是可以忽略,但对忽略的情况要提供缺省值。 要求最后实现对文件的加密转储,或通过改道的办法进行转储。对于已加密的...
② 在对加密或解密完成的数据进行写出的时候,都是将其直接写到指定好的文件,即直接写入磁盘。这是因为,考虑到中途可能因为意外断电等原因引起操作中断,为了保护已经花费时间运算完成的数据,将其直接写入磁盘。 ...
② 在对加密或解密完成的数据进行写出的时候,都是将其直接写到指定好的文件,即直接写入磁盘。这是因为,考虑到中途可能因为意外断电等原因引起操作中断,为了保护已经花费时间运算完成的数据,将其直接写入磁盘。 ...