Chinaunix首页 | 论坛 | 博客
  • 博客访问: 390171
  • 博文数量: 83
  • 博客积分: 1650
  • 博客等级: 上尉
  • 技术积分: 861
  • 用 户 组: 普通用户
  • 注册时间: 2010-10-18 18:22
文章分类
文章存档

2021年(1)

2016年(1)

2015年(2)

2014年(3)

2013年(12)

2012年(16)

2011年(18)

2010年(30)

分类: LINUX

2010-11-03 19:07:04

readwritelseek

1readwritelseek函数作用

read函数是用于将指定的文件描述符中读出数据。当从终端设备文件中读出数据时,通

常一次最多读一行。

write函数是用于向打开的文件写数据,写操作从文件的当前位移量处开始。若磁盘已满

或超出该文件的长度,则write函数返回失败。

lseek函数是用于在指定的文件描述符中将文件指针定位到相应的位置。

2readwrite函数格式

read函数的语法格式如下.

read函数语法要点

所需头文件#include

函数原型ssize_t read(int fd,void *buf,size_t count)

fd:文件描述符

函数传入值buf:指定存储器读出数据的缓冲区

count:指定读出的字节数

函数返回值

成功:读到的字节数

0:已到达文件尾

-1:出错

在读普通文件时,若读到要求的字节数之前已到达文件的尾部,则返回的字节数会小于

希望读出的字节数。

write函数的语法格式如下表6.4 所示。

write函数语法要点

所需头文件#include

函数原型ssize_t write(int fd,void *buf,size_t count)

fd:文件描述符

函数传入值buf:指定存储器写入数据的缓冲区

count:指定读出的字节数

函数返回值

成功:已写的字节数

-1:出错

在写普通文件时,写操作从文件的当前位移处开始。

lseek函数的语法格式如下表6.5 所示。

lseek函数语法要点

所需头文件

#include

#include

函数原型off_t lseek(int fd,off_t offset,int whence)

fd:文件描述符

函数传入值offset:偏移量,每一读写操作所需要移动的距离,单位是字节的数量,可正可

负(向前移,向后移)

续表

SEEK_SET:当前位置为文件的开头,新位置为偏移量的大小

SEEK_CUR:当前位置为文件指针的位置,新位置为当前位置加上

偏移量

whence

当前位置

的基点SEEK_END:当前位置为文件的结尾,新位置为文件的大小加上偏

移量的大小

函数返回值

成功:文件的当前位移

-1:出错

3)函数使用实例

该示例程序首先打开上一节中创建的文件,然后对此文件进行读写操作(记得要将文件

打开属性改为可读写,将文件权限也做相应更改)。接着,写入“Hello! I'm writing to this file!”,

此时文件指针位于文件尾部。接着在使用lseek 函数将文件指针移到文件开始处,并读出10

个字节并将其打印出来。程序源代码如下所示:

/*write.c*/

#include

#include

#include

#include

#include

#include

#include

#define MAXSIZE

int main(void)

{

int i,fd,size,len;

char *buf="Hello! I'm writing to this file!";

char buf_r[10];

len = strlen(buf);

/*首先调用open函数,并指定相应的权限*/

if((fd = open("/tmp/hello.c", O_CREAT | O_TRUNC | O_RDWR,0666 ))<0){

perror("open:");

exit(1);

}

else

printf("open file:hello.c %d\n",fd);

/*调用write函数,将buf中的内容写入到打开的文件中*/

if((size = write( fd, buf, len)) < 0){

perror("write:");

exit(1);

}

else

printf("Write:%s\n",buf);

/*调用lsseek函数将文件指针移到文件起始,并读出文件中的10个字节*/

lseek( fd, 0, SEEK_SET );

if((size = read( fd, buf_r, 10))<0){

perror("read:");

exit(1);

}

else

printf("read form file:%s\n",buf_r);

if( close(fd) < 0 ){

perror("close:");

exit(1);

}

else

printf("Close hello.c\n");

exit(0);

}

阅读(5671) | 评论(2) | 转发(1) |
0

上一篇:Open和close

下一篇:fcntl 函数

给主人留下些什么吧!~~

chinaunix网友2011-01-04 20:07:00

很好的, 收藏了 推荐一个博客,提供很多免费软件编程电子书下载: http://free-ebooks.appspot.com

chinaunix网友2010-11-18 01:43:30

perror函数多加了一个冒号,冒号是自动加上的