第三章 文件I/O (三)
来源:互联网 发布:找工作最靠谱的软件 编辑:程序博客网 时间:2024/05/09 08:31
4,lseek
使指针指向文件中的指定位置
//-------------lseek.c----------------------
#include <sys/types.h>
#include <unistd.h>
#include <sys/stat.h>
#include <fcntl.h>
#include "ourhdr.h"
#include "err_error.h"
main()
{
int fd;
if((fd=open("123",O_RDWR))==-1)
err_sys("open error");
//还记得吗,123中是"Hello world/n"
//我们将第一个l改为o,我们使用SEEK_CUR,因为刚打开文件时指针在文件开始的位置
if(lseek(fd,2,SEEK_CUR)==-1)
err_sys("lseek cur error");
if(write(fd,"o",1)!=1)
err_sys("write o error");
//我们将world的l改为m。注意,新行符占一位,先使指针指向r
if(lseek(fd,-4,SEEK_END)==-1)
err_sys("lseek end error");
if(write(fd,"m",1)!=1)
err_sys("write m error");
//我们将H改为A
if(lseek(fd,0,SEEK_SET)==-1)
err_sys("lseek set error");
if(write(fd,"A",1)!=1)
err_sys("write A error");
//我们生成一个空洞
if(lseek(fd,30,SEEK_END)==-1)
err_sys("lseek error");
if(write(fd,"empty",5)!=5)
err_sys("write empty error");
close(fd);
}
//------------------------end-------------------------
king@king-laptop:~/blog$ gcc -o lseek lseek.c
king@king-laptop:~/blog$ ./lseek
king@king-laptop:~/blog$ cat 123
Aeolo wormd!
emptyking@king-laptop:~/blog$
我们用cat没有看到空洞,看到没,cat遇到新行符'/n'就给换行了。你用vi就可以看到空洞
king@king-laptop:~/blog$ vi 123
Aeolo wormd!
^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@empty
//------------启用添加标志再使用sleek-----------------------
//------------file.c---------------------
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <fcntl.h>
main()
{
char line[100];
int fd;
fd=creat("abcd",0600);
write(fd,"1234567890",10);
close(fd);
fd=open("abcd",O_RDWR | O_APPEND);
lseek(fd,4,SEEK_SET);
read(fd,line,2);
write(STDOUT_FILENO,line,2);
lseek(fd,0,SEEK_SET);
write(fd,"abcde",5);
close(fd);
}
//-------------------end------------------------
king@king-laptop:~/blog$ gcc -o file file.c
king@king-laptop:~/blog$ ./file
56king@king-laptop:~/blog$ cat abcd
1234567890abcdeking@king-laptop:~/blog$ //设置了O_APPEND后,write有了自动设置lseek的功能
- 第三章 文件I/O (三)
- 第三章:文件I/O
- 第三章 文件 I/O
- 第三章 文件I/O
- 第三章 文件 I/O
- 第三章:文件I/O
- 第三章 文件I/O
- 第三章 文件I/O (一)
- 第三章 文件I/O (二)
- 第三章 文件I/O (四)
- [APUE]第三章:文件I/O
- AUPE学习第三章------文件I/O
- APUE第三章 文件I/O
- AUPE第三章文件I/O笔记
- apue第三章文件I/O
- 《apue》读书笔记 第三章 文件I/O
- 【APUE】3、第三章 文件I/O
- APUE学习: 第三章, 文件I/O
- 序
- 第三章 文件I/O (一)
- ABAP 学习网址
- 第三章 文件I/O (二)
- [双语阅读]另类情人节:去动物园体会“狂野之爱”
- 第三章 文件I/O (三)
- 第三章 文件I/O (四)
- “网络吸血鬼” Leech
- 第四章 文件和目录 (一)
- 面试忌问八大问题
- 第四章 文件和目录 (二)
- 关于C#中的ArrayList
- 第四章 文件和目录 (三)
- 第四章 文件和目录 (四)