非缓冲文件系统
前面介绍的缓冲文件系统是借助文件结构体指针来对文件进行管理,通过文件指针来对 文件进行访问,既可以读写字符、字符串、格式化数据,也可以读写二进制数据。非缓冲文 件系统依赖于操作系统,通过操作系统的功能对文件进行读写,是系统级的输入输出,它不 设文件结构体指针,只能读写二进制文件,但效率高、速度快,由于A N S I标准不再包括非缓 冲文件系统,因此建议大家最好不要选择它。本书只作简单介绍。 1. 文件的打开与关闭 非缓冲文件系统不是A N S I标准定义的,是U N I X型I / O系统的一员,所以,其原型位于 i o . h文件中。 打开文件: int open(char *fname,int acces;s) 打开文件名为f n a m e,以a c c e s s方式访问: a c c e s s的值为:O _ R D O N LY 只读 O _ W R O N LY 只写 O _ R D W R 读写 关闭文件: close(int fd); 下述程序用U N I X系统打开和关闭一个文件: #include "io.h" #include "fcntl.h" #include "sys/stat.h" m a i n ( a r g c , a r g v ) int argc; char *argv[] { int fd; if((fd=open(argv[1],O_RDONLY))==-1) 以 /只*读方式打开文件*/ { printf("cannt open file!"); e x i t ( 0 ) ; } printf("file existent!"); if (close(fd)) printf("error in closing file/n"); } 2. 文件的读写 对非缓冲文件系统的读写函数的原型在i o . h头文件中,其调用形式为: int read(int fd,void *buf,int count) r e a d ( )函数从f d说明的文件中读取c o u n t个字节到b u f所指向的缓冲区。函数的返回值是实际读写的字节数。 int write(int fd,void *buf,int count) w r i t e ( )函数把c o u n t个字节从b u f写入到f d说明的文件中。函数的返回值是实际写入的字节 数。 下面例子从文件T E S T. T S T中读取它的前半1 0 0个字节并放到数组b u ff e r中。 #include "io.h" #include "stdio.h" #include "fcntl.h" m a i n ( ) { int fd; char buffer[100]; if ((fd=open("TEST.TST",O_RDONLY))==-1)打 /开*文件*/ { printf("cannot open file !/n"); e x i t ( 0 ) ; } if (read(fd,buffer,100)!=100) / *判断读写的字节数是否正确* / printf("Possible read error."); }
|
- 上一篇:缓冲文件系统
- 下一篇:C语言文件系统应用举例