C语言lseek()函数:移动文件的读写位置

头文件:

#include #include

定义函数:

off_t lseek(int fildes, off_t offset, int whence);

函数说明:

每一个已打开的文件都有一个读写位置, 当打开文件时通常其读写位置是指向文件开头, 若是以附加的方式打开文件(如O_APPEND), 则读写位置会指向文件尾. 当read()或write()时, 读写位置会随之增加,lseek()便是用来控制该文件的读写位置. 参数fildes 为已打开的文件描述词, 参数offset 为根据参数whence来移动读写位置的位移数.

参数 whence 为下列其中一种:

SEEK_SET 参数offset 即为新的读写位置.

SEEK_CUR 以目前的读写位置往后增加offset 个位移量.

SEEK_END 将读写位置指向文件尾后再增加offset 个位移量. 当whence 值为SEEK_CUR 或

SEEK_END 时, 参数offet 允许负值的出现.

下列是教特别的使用方式:

1) 欲将读写位置移到文件开头时:lseek(int fildes, 0, SEEK_SET);

2) 欲将读写位置移到文件尾时:lseek(int fildes, 0, SEEK_END);

3) 想要取得目前文件位置时:lseek(int fildes, 0, SEEK_CUR);

返回值:当调用成功时则返回目前的读写位置, 也就是距离文件开头多少个字节. 若有错误则返回-1, errno 会存放错误代码.

附加说明:Linux 系统不允许lseek()对tty 装置作用, 此项动作会令lseek()返回ESPIPE.

C语言fseek()函数:移动文件流的读写位置头文件:

#include

定义函数:

int fseek(FILE * stream, long offset, int whence);

函数说明:

fseek()用来移动文件流的读写位置.

1、参数stream 为已打开的文件指针,

2、参数offset 为根据参数whence 来移动读写位置的位移数。参数 whence 为下列其中一种:

SEEK_SET 从距文件开头offset 位移量为新的读写位置. SEEK_CUR 以目前的读写位置往后增加offset 个位移量.

SEEK_END 将读写位置指向文件尾后再增加offset 个位移量. 当whence 值为SEEK_CUR 或

SEEK_END 时, 参数offset 允许负值的出现.

下列是较特别的使用方式:

1) 欲将读写位置移动到文件开头时:fseek(FILE *stream, 0, SEEK_SET);

2) 欲将读写位置移动到文件尾时:fseek(FILE *stream, 0, 0SEEK_END);

返回值:当调用成功时则返回0, 若有错误则返回-1, errno 会存放错误代码.

附加说明:fseek()不像lseek()会返回读写位置, 因此必须使用ftell()来取得目前读写的位置.

范例

#include

main()

{

FILE * stream;

long offset;

fpos_t pos;

stream = fopen("/etc/passwd", "r");

fseek(stream, 5, SEEK_SET);

printf("offset = %d\n", ftell(stream));

rewind(stream);

fgetpos(stream, &pos);

printf("offset = %d\n", pos);

pos = 10;

fsetpos(stream, &pos);

printf("offset = %d\n", ftell(stream));

fclose(stream);

}

执行

offset = 5

offset = 0

offset = 10

f_lseek_C语言中lseek()函数和fseek()函数的使用详解相关推荐

  1. c语言中%s的作用,C语言中%c与%s的区别与划分详解

    %c格式对应的是单个字符,%s格式对应的是字符串. 例: char a; char b[20]; scanf("%c",&a); //只能输入一个字符. scanf(&qu ...

  2. c 语言中set的用法,C++中set用法详解

    1.关于set C++ STL 之所以得到广泛的赞誉,也被很多人使用,不只是提供了像vector, string, list等方便的容器,更重要的是STL封装了许多复杂的数据结构算法和大量常用数据结构 ...

  3. c语言中limit 用法,mysql limit用法及优化详解

    摘要 腾兴网为您分享:mysql limit用法及优化详解,一点万象,喜马拉雅,唯品会,图乐等软件知识,以及盟重土城花屏补丁,宝马车主俱乐部,本地文件搜索,锁定刷新率,发券,微信多开真正版,云门禁,真 ...

  4. c语言 strcpy原型,浅谈C语言中strcpy,strcmp,strlen,strcat函数原型

    实例如下: //strcat(dest,src)把src所指字符串添加到dest结尾处(覆盖dest结尾处的'\0')并添加'\0' char *strcat(char * strDest, cons ...

  5. C语言lseek()函数和 fseek()函数 rewind函数

    lseek():移动文件读写位置 头文件: #include <sys/types.h> #include <unistd.h> 定义函数: off_t lseek(int f ...

  6. C语言中的rename()和remove()函数的使用及注意点

    C语言中的rename()和remove()函数的使用及注意点 C语言中rename() 和remove()函数属于文件处理函数,其中rename() 对文件或目录进行移动和删除. int ret = ...

  7. C语言中的malloc与free函数

    C语言中的malloc与free函数 malloc函数的作用是在堆中开辟一块指定大小的空间.如果开辟成功,返回空间首个字节地址,失败则返回NULL. free函数能够释放在堆中开辟的内存空间,传入一个 ...

  8. 【python教程入门学习】Python函数定义及传参方式详解(4种)

    这篇文章主要介绍了Python函数定义及传参方式详解(4种),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 一.函数初识 1.定 ...

  9. 定时器 槽函数没执行_Web服务器项目详解 07 定时器处理非活动连接(上)

    点击"两猿社" 关注我们 Web服务器详解目录 00 项目概述 01 线程同步机制包装类 02 半同步/半反应堆线程池(上) 03 半同步/半反应堆线程池(下) 04 http连接 ...

最新文章

  1. Mac下导出chrome插件
  2. php上传图片k,PHP fastcgi模式上传大文件(大约有300多K)报错,
  3. 关于云计算 你所知道的可能不是真的
  4. SQL SERVER占用服务器内存过高的解决方案
  5. 字节、快手、阿里、腾讯这两年的广告推荐技术进展 | AICon
  6. 【githubgit】1、github中的watch、star、fork的作用
  7. eclipse中java获取js的值_javascript – 如何在Eclipse中使用Selenium将外部.js导入我的Java测试?...
  8. UVA 146 ID Codes
  9. F110报错:Company codes **/** do not appear in proposal ***; correct
  10. Visual Studio Code 中文下载
  11. jzoj3833-平坦的折线【模型转换,LIS】
  12. 使用ELK堆栈进行日志聚合
  13. 2008 年 十大预测的总结 (只对了一半左右)
  14. python 库 镜像_python安装镜像库
  15. 代码是写给人看的还是写给机器看的?
  16. java bigInteger +1 加常数
  17. 购物网站的设计与实现论文
  18. 常用编码说明-GB2312
  19. 回炉重造--PHP编程速成
  20. Drcom校园网认证系列(一) 抓包

热门文章

  1. 求求你别再做低级的码农了!计算机专业的必看,这样做才能有出路!
  2. App推广干货:一个新的App该如何推广
  3. c语言的jmp_buf函数
  4. 四子棋游戏--bingo game
  5. WebAssembly WASM 是什么
  6. Pygame实战外星人入侵1.1——添加飞船
  7. 人力资源软件对中小企业的七点重要性
  8. 中国历年GDP增长率表
  9. Fedora23 引导修复
  10. 计算机视觉CV的入门理解