c语言生成随机的坐标,C语言文件的随机读写

前面介绍的文件读写函数都是顺序读写,即读写文件只能从头开始,依次读写各个数据。但在实际开发中经常需要读写文件的中间部分,要解决这个问题,就得先移动文件内部的位置指针,再进行读写。这种读写方式称为随机读写,也就是说从文件的任意位置开始读写。

实现随机读写的关键是要按要求移动位置指针,这称为文件的定位。

文件定位函数rewind和fseek

移动文件内部位置指针的函数主要有两个,即 rewind() 和 fseek()。

rewind() 用来将位置指针移动到文件开头,前面已经多次使用过,它的原型为:

void rewind ( FILE *fp );

fseek() 用来将位置指针移动到任意位置,它的原型为:

int fseek ( FILE *fp, long offset, int origin );

参数说明:

1) fp 为文件指针,也就是被移动的文件。

2) offset 为偏移量,也就是要移动的字节数。之所以为 long 类型,是希望移动的范围更大,能处理的文件更大。

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; i

scanf("%s %d %d %f", pboys->name, &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 %f\n", 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/508243.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c语言 画线函数,c语言绘制函数曲线

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼我这种方法为什么图形只能显示一下就不见了,这是为什么?能不能用在双曲线上??能的话改哪里??#include#includefloat a,b,c,xmin,xmax,max; void menu(){printf…

k6前级效果器怎么用_新手学习电吉他,效果器应选择单块还是综合?

作为一个新手来说,我建议一开始先选择综合型效果器。这里我们先简单介绍下综合效果器与单块效果器。综合效果器可以理解为多个单块的综合体,即包含了很多种效果。一块大综合效果器可能就有三四十种预置音色,有过载、失真、法滋、延迟、混响、…

android监听方法的耗时时间,Android从网络获取北京时间以及动态的监听时间

方式一:public static void main(String[] args) throws Exception {URL urlnew URL("http://www.bjtime.cn");//取得资源对象URLConnection ucurl.openConnection();//生成连接对象uc.connect(); //发出连接long lduc.getDate(); //取得网站日期时间Date datenew Da…

android百度多渠道打包,Android多渠道打包方案的实践与优化

目前使用过的多渠道打包方式有两种 ,一种是通过gradle打包,还有一种是美团的多渠道打包方案具体详情见这里1、Gradle打包1.1、在Androidmanifest.xml中添加android:name"UMENG_CHANNEL"android:value"${UMENG_CHANNEL_VALUE}" />…

与smart_近视激光手术之smart篇

今天我们说的Smart,不是奔驰的smart哦,是近视激光手术的一种手术类型,也是原先tprk手术的升级版。浙江省眼科医院之江院区(杭城最早开展SMART全激光手术医院)手术设备:德国阿玛仕750s(很多网友会…

android 下滑,Android实现下滑和上滑事件

public class MainActivity extends Activity implementsIXListViewListener{privateXListView mListView;private ArrayAdaptermAdapter;private ArrayList items new ArrayList();privateHandler mHandler;private int start 0;//数据起始位置private static int refreshCn…

一张图 综合交通 解决方案_航天智慧环保 | 重庆跳蹬河智慧水务管理系统解决方案—应用篇...

导读随着社会信息化趋势的不断增强,信息社会作为人类社会环境的一个重要方面,在社会中的地位和作用日益显著。在环境监测领域,对有效信息的把握以及正确的使用与水污染的防治和水环境的管理密切相关。航天智慧公司发挥航天系统工程优势&#…

oc 画一个圆弧_用SolidWorks画的塑料衣架,要用到不少让人头疼的曲线

此图是用SolidWorks2015建模,用KeyShot 8渲染。SW文件在2019年12月3日文件夹。零件一:1.在前视基准面上画样条曲线。2.在右视基准面上画样条曲线。(曲面放样的轮廓)3.新建基准面,参考样条曲线和紫色端点。4.在新基准面上画样条曲线。5.新建基…

红米android4.4.2,新版红米Note配置升级详解:系统其实是基于Android 4.4.2

新版红米Note今天中午,小米正式发布了4G版红米Note,由于该机早就出现在了工信部,因此较早一些的传闻显示该机在7月22日的发布会上就会和我们见面,但最终还是让我们多等了小半个月。和原版有所不同的是,4G版红米Note只有…

批量引号_RcoketMQ 批量发送和消息过滤

一、批量发送消息1、批量发送消息要求参考官方文档:http://rocketmq.apache.org/docs/batch-example/① 不能是延迟消息② 有相同的 Topic 和 waitStoreMsgOK(默认是 true,消息发送时,是否等待消息存储完成后再返回)③ 消息总大小不超过 1MB2…

android打开4g开关,【VoLTE】如何让手机的增强型4GLTE开关默认处于关闭状态?

[DESCRIPTION]MTK默认的版本中,Setting里面的增强4GLTE开关(VoLTE)默认是开启的,如果想要将其默认设置为关闭状态的话请参考如下修改即可:[SOLUTION](1)package com.android.providers.settings;DatabaseHelper.javaloadSetting(stmt, Settin…

msflexgrid允许大选择_特大型矿井提升机结构和布置方式的选择

导语:结合葫芦素矿井主井提升系统的设计,介绍了内装式提升机和直联悬挂式提升机的结构特点,比较了塔式提升机和落地式提升机的布置方式,对大型立井提升系统提升机结构和布置方式提出了自己的观点,条件允许时内装式提升…

Android开机时间统计,android 开机时间检测

基于SPRD平台,根据关键字检查开机耗时#codingutf-8__author__"ao.deng"import ctypes, sys,osimport reSTD_INPUT_HANDLE -10STD_OUTPUT_HANDLE -11STD_ERROR_HANDLE -12# 字体颜色定义 text colorsFOREGROUND_BLUE 0x09 # blue.FOREGROUND_GREEN 0x…

jqc3ff继电器引脚图_单片机控制继电器驱动电路图原理分析

首先看看继电器的驱动这是典型的继电器驱动电路图,这样的图在网络上随处可以搜到,并且标准教科书上一般也是这样的电路图为什么要明白这个图的原理?单片机是一个弱电器件,一般情况下它们大都工作在5V甚至更低.驱动电流在mA级以下.而要把它用于一些大功率场合,比如控制电动机,显…

php html转换数组,将html标签转换为php数组

我有一个来自我想要转换的合作伙伴的系统状态页,这样我就可以将其输入自动化到我自己的服务页面中。该服务的状态由课程提供。我知道这很不理想,但这是他们提供更新的唯一方式。将html标签转换为php数组下面是HTML的一个副本:SERVICE 1Update…

oracle9i 随机端口_修改 Oracle9i 8080端口问题

1.使用sys登录Oracle,利用dbms_xdb修改端口设置SQL> -- Change the HTTP/WEBDAV port from 8080 to 8081SQL> call dbms_xdb.cfg_update(updateXML(2 dbms_xdb.cfg_get()3 , /xdbconfig/sysconfig/protocolconfig/httpconfig/http-port/text()4 …

html页面导出,HTML页面导出execl表格

点击导出按钮时触发method5(“传入表格ID”)var idTmr;function getExplorer() {var explorer window.navigator.userAgent;//ieif(explorer.indexOf("MSIE") > 0) {return ie;}//firefoxelse if(explorer.indexOf("Firefox") > 0) {return Firefox…

java byte[] 文件流 转换成string是乱码_Java学习--IO(二)、多线程

1.标准输入流标准输入流是指从标准输入设备流向程序的数据。Java利用http://System.in来得到一个InputStream字节输入流public static void main(String[] args) throws IOException {// 需求:输入一句话,然原样输出InputStream in System.in;byte[] buf new byte…

HTML字体小于12谷歌不兼容,Chrome谷歌浏览器下不支持css字体小于12px的解决办法...

coder.png在这一年的工作中,我发现很多问题你利用自己的「聪明才智」绕过去了,总有一天它会和你不期而遇,今天我们就来直面一个字体兼容性的小问题:Chrome谷歌浏览器下不支持css字体小于12px。我们先来看个效果图(chrome下)&#…

为什么同大取大同小取小_不锈钢马大型动物雕塑-大同金属雕塑马订制

不锈钢马大型动物雕塑-大同金属雕塑马订制 不锈钢浮雕雕塑所谓不锈钢浮雕雕塑是雕塑与绘画结合的产物,用压缩的办法来处理对象,靠等因素来表现三维空间,并只供一面或两面观看。浮雕一般是在另一平面上的,因此在建筑上使用更多&…