Linux文件编程(三)

Linux文件编程的小结和补充

基于上节课我们对文件内容读取的时候,光标移动的方式是重新打开文件,我们使用一个特殊的函数进行优化

lseek函数使用

头文件:
#include <sys/types.h>
#include <unistd.h>

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

参数:
fd:文件标识符

off_t offset:偏移值,相对于whence的偏移值,负数向前移动,正数向后移动

int whence:

 SEEK_SET:(头)
          The offset is set to offset bytes.

   SEEK_CUR:(当前光标位置)
          The offset is set to its current location plus offset bytes.

   SEEK_END:(尾)
          The offset is set to the size of the file plus offset bytes.

返回值:
和头相比偏移多少个字节

案例优化
	lseek(fd,0,SEEK_SET);
	char *readBuf;
	readBuf=(char *)malloc(sizeof(char)*n_write+1);//给readBuf开辟空间存放,write的内容
	int n_read=read(fd,readBuf,n_write);
	printf("read %d ,context:%s\n",n_read,readBuf);
	close(fd);
	return 0;
计算文件大小(文件必须存在)
int main()
{
	int fd;
	fd=open("./file1",O_RDWR);
	int file_size=lseek(fd,0,SEEK_END);
	printf("file size is :%d\n",file_size);
	close(fd);
	return 0;
}

小结:

Linux提供的一系列API对文件操作
打开:open
读写:write/read
光标定位:lseek
关闭:close

注:fd文件描述符
Linux默认 0为标准输入 1为标准输出 2为标准版错误 所以一般是从3开始

流程:

  1. 打开/创建文件
  2. 读取文件/写入文件
  3. 关闭文件

动态文件:
Linux内核会产生一个结构体
struct
{
fd;
信息节点;
buf(内存中一个缓冲区)
}
当文件close后,会存回磁盘中

下一章将会有两个小练习!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值