文件IO编程五
来源:互联网 发布:艾瑞数据分析 编辑:程序博客网 时间:2024/05/02 06:46
这一节主要是将系统IO的四个函数:read write
(1)read
头文件:#include <unistd.h>
ssize_t read(int fd, void * buf, size_t count);
说明:read是把参数fd所指的文件传送count个字节到buf指针所指的内存中去。若参数count为0,则read()不会有作用并返回0。返回值为实际读取的字节数,若返回0.表示已经读取完成,此外文件读写位置会随读取到的字节移动。
(2)write
头文件:#include <unistd.h>
ssize_t write (int fd, const void * buf, size_t count);
说明:write()函数会把参数buf所指的内存写入count个字节到参数fd所指的文件内。
程序:
int fd_src = open(argv[1], O_RDONLY);
int fd_dst = open(argv[2], O_RDONLY|O_CREAT|O_TRUNC,0644);
char buf[100];
int nread,nwrite;
while(1)
{
bzero(buf, 100);
nread = read(fd_src, buf, 100);
if(nread == -1)
{
perror("read() failed");
exit(1);
}
if(nread == 0)
break;
char *p = buf;
while(nread > 0)
{
nwrite = write(fd_dst, p, nread);
nread -= nwrite;
p += nwrite; //意思是因为write函数不会自动转移位置去写入。
}
}
(3)lseek
头文件:#include <sys/types.h> #include <unistd.h>
定义函数:off_t lseek(int fildes, off_t offset, int whence);
说明:每一个已打开的文件都有一个读写位置,当打开文件时通常其读写位置是指向文件开头,若是以附加的方式打开文件(如O_APPEND),则读写位置会指向文件尾。read()时,读写位置会随之增加,lseek()便是用来控制该文件的读写位置,参数fildes为已打开的文件描述符,参数offset为根据参数whence来移动读写位置的位移数。
参数whence为下列其中一种:
1) 欲将读写位置移到文件开头时:lseek(int fildes, 0, SEEK_SET);
2) 欲将读写位置移到文件尾时:lseek(int fildes, 0, SEEK_END);
3) 想要取得目前文件位置时:lseek(int fildes, 0, SEEK_CUR);
- 文件IO编程五
- 五、Linux系统编程-文件和IO(三)文件元数据的获取
- 七、Linux系统编程-文件和IO(五)fcntl函数及常用操作、文件锁
- 五,Android文件IO详解
- File.io读取文件(五)
- 文件IO操作编程
- Linux文件IO编程
- 文件IO编程
- 文件IO编程一
- 文件IO编程二
- 文件IO编程三
- 文件IO编程四
- 文件IO编程六
- 文件IO编程七
- 文件IO编程八
- 文件IO编程九
- 文件IO编程十
- 文件IO编程十一
- 河南省第十届ACM大学生程序设计竞赛总结
- 逆向工程核心原理学习笔记(二十三):栈帧10:设置返回值,删除栈帧&main()函数终止
- 弹力球事件
- VTK实现简单科学可视化
- Linux之file_struct&fd(file descriptor)
- 文件IO编程五
- 专项练习:数组和字符串(二)
- CXF和Spring的集合约束
- SQL Server配置读写分享 注意事项
- 腾讯云修改了root用户密码为什么没有生效的解决办法
- POJ1017贪心
- 常见对象-模拟用户登录案例
- tomcat启动的时候报错:Failed to start component
- 回溯法案例javascript实现