c语言fseek128字节,C语言rewind和fseek函数的用法详解(随机读写文件)
前面介绍的文件读写函数都是顺序读写,即读写文件只能从头开始,依次读写各个数据。但在实际开发中经常需要读写文件的中间部分,要解决这个问题,就得先移动文件内部的位置指针,再进行读写。这种读写方式称为随机读写,也就是说从文件的任意位置开始读写。
实现随机读写的关键是要按要求移动位置指针,这称为文件的定位。
文件定位函数rewind和fseek
移动文件内部位置指针的函数主要有两个,即 rewind() 和 fseek()。
rewind() 用来将位置指针移动到文件开头,前面已经多次使用过,它的原型为:
void rewind ( FILE *fp );
fseek() 用来将位置指针移动到任意位置,它的原型为:
int fseek ( FILE *fp, long offset, int origin );
参数说明:
1) fp 为文件指针,也就是被移动的文件。
2) offset 为偏移量,也就是要移动的字节数。之所以为 long 类型,是希望移动的范围更大,能处理的文件更大。offset 为正时,向后移动;offset 为负时,向前移动。
3) origin 为起始位置,也就是从何处开始计算偏移量。C语言规定的起始位置有三种,分别为文件开头、当前位置和文件末尾,每个位置都用对应的常量来表示:
起始点
常量名
常量值
文件开头
SEEK_SET
0
当前位置
SEEK_CUR
1
文件末尾
SEEK_END
2
例如,把位置指针移动到离文件开头100个字节处:
fseek(fp, 100, 0);
值得说明的是,fseek() 一般用于二进制文件,在文本文件中由于要进行转换,计算的位置有时会出错。
文件的随机读写
在移动位置指针之后,就可以用前面介绍的任何一种读写函数进行读写了。由于是二进制文件,因此常用 fread() 和 fwrite() 读写。
【示例】从键盘输入三组学生信息,保存到文件中,然后读取第二个学生的信息。
#include #define N 3 struct stu{ char name[10]; //姓名 int num; //学号 int age; //年龄 float score; //成绩 }boys[N], boy, *pboys; int main(){ FILE *fp; int i; pboys = boys; if( (fp=fopen("d:\demo.txt", "wb+")) == NULL ){ printf("Cannot open file, press any key to exit!n"); getch(); exit(1); } printf("Input data:n"); for(i=0; iname, &pboys->num, &pboys->age, &pboys->score); } fwrite(boys, sizeof(struct stu), N, fp); //写入三条学生信息 fseek(fp, sizeof(struct stu), SEEK_SET); //移动位置指针 fread(&boy, sizeof(struct stu), 1, fp); //读取一条学生信息 printf("%s %d %d %fn", boy.name, boy.num, boy.age, boy.score); fclose(fp); return 0; }
运行结果:
Input data:
Tom 2 15 90.5↙
Hua 1 14 99↙
Zhao 10 16 95.5↙
Hua 1 14 99.000000
c语言fseek128字节,C语言rewind和fseek函数的用法详解(随机读写文件)相关推荐
- C语言rewind函数返回值为空,C语言rewind和fseek函数的用法详解(随机读写文件)...
前面介绍的文件读写函数都是顺序读写,即读写文件只能从头开始,依次读写各个数据.但在实际开发中经常需要读写文件的中间部分,要解决这个问题,就得先移动文件内部的位置指针,再进行读写.这种读写方式称为随机读 ...
- python rewind_C语言rewind和fseek函数的用法详解(随机读写文件)
前面介绍的文件读写函数都是顺序读写,即读写文件只能从头开始,依次读写各个数据.但在实际开发中经常需要读写文件的中间部分,要解决这个问题,就得先移动文件内部的位置指针,再进行读写.这种读写方式称为随机读 ...
- 第十一章 文件操作_C语言fscanf和fprintf函数的用法详解(格式化读写文件)
fscanf() 和 fprintf() 函数与前面使用的 scanf() 和 printf() 功能相似,都是格式化读写函数,两者的区别在于 fscanf() 和 fprintf() 的读写对象不是 ...
- php函数find的用法,c语言find函数的用法详解
c语言find函数的用法详解 C语言之find()函数 find函数用于查找数组中的某一个指定元素的位置. 比如:有一个数组[0, 0, 5, 4, 4]: 问:元素5的在什么位置,find函数 返回 ...
- c语言memcopy_C语言中memcpy 函数的用法详解
C语言中memcpy 函数的用法详解 memcpy(内存拷贝函数) c和c++使用的内存拷贝函数,memcpy函数的功能是从源src所指的内存地址的起始位置开始拷贝n个字节到目标dest所指的内存地址 ...
- 计算机科学类专升本复习之“C语言fopen函数的用法”详解(初稿)
C语言fopen函数的用法,C语言打开文件详解 在C语言中,"操作文件" 之前 必须 先"打开文件"; 所谓"打开文件",就是让 " ...
- linux rewind函数,fseek(),ftell()和rewind()函数的用法详解
转自:http://blog.csdn.net/lijun5635/article/details/14210181 功 能 重定位流( 数据流/文件)上的 文件内部位置 指针 注意:不是 定位文件指 ...
- C语言fscanf和fprintf函数的用法详解
fscanf() 和 fprintf() 函数与前面使用的 scanf() 和 printf() 功能相似,都是格式化读写函数,两者的区别在于 fscanf() 和 fprintf() 的读写对象不是 ...
- x3用c语言函数表示,C语言中strtod()函数的用法详解
函数原型: #include double strtod(const char *nptr, char **endptr); C语言及C++中的重要函数. 名称含义 strtod(将字符串转换成浮点数 ...
最新文章
- WPF程序中的XPSDocumentViewer
- 收藏的2个正则html标签剔除方法
- Linux-鸟菜-1-Linux简介
- 【控制】《多智能体系统的动力学分析与设计》徐光辉老师-第7章-不确定分数阶系统的多一致
- Atomic Integer 原理分析-getAndIncrement
- asp 强制转换浮点数值_C/C++中浮点数的编码存储
- c 结构体的简单封装1
- ESP8266使用历程
- jquery插件dataTables(dataTables在显示表格的时候,果然是个好东西,支持排序/搜索/分页/...)
- Android 沉浸式状态栏
- 作业要求 20181030-1 Alpha发布用户使用报告
- RF(接口自动化测试)
- Windows与Linux配置jco3
- STM32之字模软件的使用
- ImageNet数据集和ILSVRC2012介绍以及如何通过python使用
- 为什么别人的移动开发效率是你的2倍?丨课程推广
- 巴拉特比印度大分水岭
- Clock skew too great
- js实现图片连续滚动播放
- Received HTTP code 404 from proxy after CONNECT
热门文章
- C语言开定时器做呼吸灯程序,简单的基于51单片机定时器上呼吸灯程序
- jboss怎么连接Oracle数据库,如何在Jboss中配置数据源
- java图片转换为数据流_OpenCV 读取数据流图片
- native react 更新机制_React Native - 组件的生命周期详解(附:各阶段调用的方法)...
- rdd分片 spark_大数据面试题(Spark(一))
- html5 css3左侧多级菜单,modernizr.custom.js制作html5 CSS3多级层叠侧边菜单导航栏
- Oracle 实验5 视图与索引
- jquery 当页面图片加载之后_图片的懒加载和预加载
- java 打印不换行_Swift的print不换行打印的方法
- P1501 [国家集训队]Tree II