unix环境高级编程复习-文件I/O(2)
来源:互联网 发布:kendalltau python 编辑:程序博客网 时间:2024/05/19 03:27
当前文件偏移量:
我们都知道文件是连续的,就像我们经常看到的txt文件,它是由一串连续的字符构成的。我们对txt的操作希望是对其中字符的操作,我们如何知道现在操作的是那个字符和如何操作确定的字符哪?这时候我们就需要文件偏移量来帮助我们了。每个打开的文件都有一个与其相关的“当前文件偏移量”。它通常是一个非负数(有可能不是),用以度量从文件开始处计算的的字节数。通常读,写操作都是从当前文件偏移量处开始的,并使偏移量增加所读写的字节数。按系统默认情况,当打开一个文件时,除非指定O_APPEND选项,否则该偏移量被设置为0。
我们可以显式地为一个打开的文件设置其偏移量。
#include<unistd.h>
off_t lseek(int files,off_t offset,int whence);
返回值:若成功返回新的文件偏移量,否则返回-1。
参数offset的解释与惨数whence的值有关。
若whence是SEEK_SET,则将该文件的偏移量设置为距文件开始处offset个字节。
若whence是SEEK_CUR,则将该文件的偏移量设置为其当前之加offset,offset可为正或负。
若whence是SEEK_END,则将文件的偏移量设置为文件长度加offset,offset可为正或负。
read函数(从文件中读数据):
#include<unistd.h>
ssize_t read(int fileds,void *buf,size_t nbyte);
返回值:若成功则返回读到的字节数,若已到文件尾则返回0,若出错则返回-1。
有多种情况可使读到的字节数少于要求读的字节数:
读普通文件时,在读到要求的字节数之前已到文件尾。
当从终端设备读时,通常最多一次最多读一行。
当一信号造成中断,而已经读了部分数据。
write函数(向文件中写数据):
#include<unistd.h>
ssize_t write(int fileds,const void *buf,size_t nblyte);
返回值:若成功则返回已写的字节数,若出错则返回-1。
例子:将标准输入复制到标准输出
#include<unistd.h>
#include<stdio.h>
#define BUFFSIZE 4096
int main()
{
int n;
char buf{BUFFSIZE];
while((n=read(STDIN_FILENO,buf,BUFFSIZE))>0)
if(write(STDOUT_FILENO,buf,n)!=n)
printf("write error");
if(n<0)
printf("read error");
exit(0);
}
- unix环境高级编程复习-文件I/O(2)
- unix环境高级编程复习-文件I/O(1)
- unix环境高级编程复习-文件I/O(3)
- UNIX环境高级编程----文件I/O
- 《unix高级环境编程》文件I/O
- 《unix高级环境编程》文件I/O
- Unix环境高级编程---文件I/O
- UNIX环境高级编程--文件I/O(一)
- unix环境高级编程复习)——标准I/O库(1)
- UNIX环境高级编程(6):文件I/O(2)
- Unix环境高级编程第三章文件I/O摘记
- UNIX环境高级编程——文件I/O
- UNIX环境高级编程—文件I/O
- Unix环境高级编程——文件I/O
- 《UNIX环境高级编程》读书笔记 —— 文件 I/O
- 文件I/O - UNIX环境高级编程-第3章
- UNIX环境高级编程-第3章- 文件I/O
- unix环境高级编程——文件i/o
- 图像处理与计算机视觉基础,经典以及最近发展
- java中方法的重载和方法的覆写的区别
- [ajax 学习笔记] json数据格式
- 最短路径问题
- hdoj 1214 圆桌会议【数学】
- unix环境高级编程复习-文件I/O(2)
- Hdu1404 Digital Deletions(暴力SG博弈)
- Word Break II
- poj 1276 Cash Machine
- 数字电路设计之同步电路的一些经验
- ZOJ 3508 ——The War 贪心
- Hibernate getCurrentSession 与 openSession() 的区别
- 【最短路径floyd算法】HDU 1869---六度分离
- 静态字典树和动态字典树模板