C语言随机读写文件

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

文件定位函数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语言规定的起始位置有三种,分别为文件开头、当前位置和文件末尾,每个位置都用对应的常量来表示:
在这里插入图片描述

例如,把位置指针移动到离文件开头100个字节处:

fseek(fp, 100, 0);

fseek() 一般用于二进制文件,在文本文件中由于要进行转换,计算的位置有时会出错。

文件的随机读写

在移动位置指针之后,就可以用前面介绍的任何一种读写函数进行读写了。由于是二进制文件,因此常用 fread() 和 fwrite() 读写。

示例 从键盘输入三组学生信息,保存到文件中,然后读取第二个学生的信息。

#include<stdio.h>#define N 3struct 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<N; i++,pboys++){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↙
Zhang 1 14 99↙
Zhao 10 16 95.5↙
Zhang 1  14 99.000000

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

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

相关文章

mysql-installer安装教程(详细图文)

目录 1.安装 2.配置系统环境变量 3.配置初始化my.ini文件 4.MySQL彻底删除 5.Navicat 安装 1.安装 先去官网下载需要的msi&#xff0c;在这放出官网下载地址下载地址 这里我具体以8.0.28 为安装例子&#xff0c;除了最新版安装界面有些变动以往的都是差不多的。 过去的版本…

Java三种随机数生成方法

java的三种随机数生成方式 随机数的产生在一些代码中很常用&#xff0c;也是我们必须要掌握的。而java中产生随机数的方法主要有三种&#xff1a;     第一种&#xff1a;new Random()     第二种&#xff1a;Math.random()     第三种&#xff1a;currentTimeMil…

Python MySQL入门连接

目录 基本环境准备 navicat的傻瓜使用方式 python连接 mysql安装教程&#xff1a;传送门 基本环境准备 WINR 输入cmd回车打开cmd&#xff0c;登录mysql: mysql -h localhost -u root -p然后输入密码回车即可。 创建用户名为testuser1&#xff1a; CREATE USER testuser1…

JDBC连接sql server数据库

IDEA使用JDBC连接Sqlserver数据库 在IDEA的项目中添加对应数据库的jar包 在项目中创建util包和DBUtil类用来存放数据库连接的java代码。 完整代码 package com.hnpi.util;import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; …

Python MySQL创建表

目录 一、创建表 二、检查表是否存在 三、关键字 一、创建表 在库student环境下创建表名为stu: # codinggbk #连接 import pymysqlmydb pymysql.connect(host"localhost", #默认用主机名port3306,user"root", #默认用户名password"123456"…

JDBC连接 Mysql数据库

IDEA使用JDBC连接Mysql数据库 在项目中添加连接Mysql数据库的jar包 在项目中创建util包和DBUtil类用来存放数据库连接的java代码。 完整代码 package com.zsh.util;import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import…

Python MySQL插入表

目录 1.插入表格 2.插入多行 3.获取插入的 ID 1.插入表格 要在 MySQL 中填充表&#xff0c;请使用“INSERT INTO”语句。 “stu”表中添加一条记录&#xff1a; 代码&#xff1a; # codinggbk #连接 import pymysqlmydb pymysql.connect(host"localhost", #默认…

Python MySQL选择

目录 1.从表中选择 2.选择列 3.使用 fetchone() 1.从表中选择 要从 MySQL 中的表中进行选择&#xff0c;请使用“SELECT”语句。从“stu”表中选择所有记录&#xff0c;并显示结果&#xff1a; # codinggbk #连接 import pymysqlmydb pymysql.connect(host"localhos…

Eclipse编辑器字体大小的设置

我们在第一次使用 Eclipse 编写程序时&#xff0c;由于 Eclipse 默认使用的是 Cosnolas 字体&#xff0c;字号为 10&#xff0c;所以编辑器中的字体非常小&#xff0c;不方便查看。 我们可以通过下面所示的方法来修改编辑器的字体大小。 操作方法&#xff1a; 1 . 选择“窗口…

Python MySQL查询在哪里(where)

目录 一.用过滤器选择 二.通配符 三.防止 SQL 注入 一.用过滤器选择 从表中选择记录时&#xff0c;可以使用“WHERE”语句过滤选择。例如&#xff1a;选择名字为”笨小孩“的记录&#xff1a;结果&#xff1a; # codinggbk #连接 import pymysqlmydb pymysql.connect(hos…

Python MySQL排序

目录 顺序排序 按 DESC逆序排序 顺序排序 使用 ORDER BY 语句按升序或降序对结果进行排序。ORDER BY 关键字默认对结果进行升序排序。要按降序对结果进行排序&#xff0c;请使用 DESC 关键字。 按名称的字母顺序对结果进行排序&#xff1a; # codinggbk #连接 import pymys…

Python MySQL删除

目录 删除记录 防止 SQL 注入 删除记录 您可以使用“DELETE FROM”语句从现有表中删除记录。例如删除地址为“笨小孩”的任何记录&#xff1a; # codinggbk #连接 import pymysqlmydb pymysql.connect(host"localhost", #默认用主机名port3306,user"root&q…

Python MySQL更新表

目录 更新表 防止 SQL 注入 更新表 您可以使用“UPDATE”语句更新表中的现有记录。将地址栏从“Valley 345”改写为“Canyoun 123”&#xff1a; # codinggbk #连接 import pymysqlmydb pymysql.connect(host"localhost", #默认用主机名port3306,user"root…

Python MySQL合并

目录 创建新表 表中添加数据 连接两个或多个表 左连接 右连接 创建新表 创建表名为product # codinggbk #连接 import pymysqlmydb pymysql.connect(host"localhost", #默认用主机名port3306,user"root", #默认用户名password"123456",…

如何用记事本编写运行java程序?

我们在安装好JDK和配置好环境变量后&#xff0c;许多人使用编译器编写程序而不会使用记事本编写运行java程序&#xff0c;下面就给大家讲解一下使用记事本编写运行java程序。 1.首先&#xff0c;要保证环境变量配置完成。组合键<WinR>打开运行命令框。 2.输入CMD进入命…

Python MySQL限制

目录 限制结果 从另一个位置开始 限制结果 我们先看一下表中全部数据 # codinggbk #连接 import pymysqlmydb pymysql.connect(host"localhost", #默认用主机名port3306,user"root", #默认用户名password"123456", #mysql密码databasest…

笔记本电脑控制面板在哪_2020年滚筒洗衣机选购指南:滚筒洗衣机应该怎么选?哪一些滚筒洗衣机性价比更高?...

滚筒洗衣机以其独特的特点和功能的多样性被现在很多家庭所接纳&#xff0c;很多人都想入手一台滚筒洗衣机&#xff0c;因为他最大的特点就是速度&#xff0c;符合现在快节奏的生活&#xff0c;另外杀菌、省电、省水、清洁度和卫生性方面也很好。但是现在市面上的滚筒洗衣机的品…

四万字让你精通SQL数据库操作

目录 前言 MySQL 命令提示符相关操作 MYSQL 最重要的命令 SELECT选择语句 SELECT DISTINCT 选择不同语句 WHERE 查询定位 子句 AND、OR 和 NOT 运算符 ORDER BY 关键字 INSERT INTO 插入语句 NULL 空值 UPDATE更新语句 DELETE删除语句 TOP、LIMIT、FETCH FIRST 或…

3d打印英语文献_万华推出可3D打印PP粉末材料

近日&#xff0c;随着万华推出了PP粉末材料 WANFAB PP700N&#xff0c;PP将进入一个全新的应用领域——3D打印。1 什么是3D打印技术3D打印技术又称增材制造技术&#xff0c;是一项起源于20 世纪80 年代集机械、计算机、数控和材料于一体的先进制造技术。该技术的基本原理是根据…

zabbix 监控 db2_zabbix-第二章-第二节 zabbix添加简单主机监控

首先我们需要了解下监控的整体流程&#xff0c;如下下图所示&#xff1a;整体流程就是这样子的&#xff0c;我们后期也会将上面的功能一一实现&#xff0c;不过这个目标还有点儿远&#xff0c;毕竟“罗马城不是一天建成的”现在我们先学会添加 “主机组” 和 “主机” &#xf…