【C 语言】文件操作 ( 读取文件中的结构体数组 | feof 函数使用注意事项 )
文章目录
- 一、读取文件中的结构体数组 | feof 函数使用注意事项
- 二、代码示例
一、读取文件中的结构体数组 | feof 函数使用注意事项
读取文件结构体时 , 可以循环读取文件中的数据 , 只使用一个结构体的内存空间即可 ;
使用 feof()
函数 判定当前是否读取到了文件结尾 , 如果读取到结尾 , 则退出不再读取数据 ;
feof 函数原型 :
#include<stdio.h>
int feof(FILE *stream);
feof()
函数判断文件结尾 , 是通过读取 读取 函数操作 的 错误值 确定的 , feof()
函数的调用必须 紧跟着 文件操作函数 进行判断 , 所有的其它逻辑 , 都放在 feof 判断之后 , 确定没有读取到文件末尾 , 再进行操作 , 如果读取返回了错误 , 则直接退出 ;
读取 文本文件 可以使用 getc , fgets , fscanf 函数 , 向 文本文件 写出数据可以使用 putc , fputs , fprintf 函数 ;
读取 二进制文件 可以使用 fread 函数 , 向 二进制文件 写出数据可以使用 fwrite 函数 ;
例如 : 在下面的代码示例中 , 读取文件后 , 马上判断是否读取到了文件末尾 , 至于读取到的数据操作 , 需要确定本次读取文件合法性后 , 没有读取到文件末尾 , 才能进行后续操作 ;
代码示例 :
// 存储读取到的结构体数据struct student s2= {0};while(1){// 每次读取一个结构体,fread(&s2, 1, sizeof (struct student), p2);// 如果读取到文件末尾, 则退出循环if(feof(p2))break;// 打印读取到的结构体数据printf("%s, %d\n", s2.name, s2.age);}
二、代码示例
#include <stdio.h>/* 定义结构体, 存储一个字符串和年龄 */
struct student
{char name[20];int age;
};int main()
{// 要写入文件的结构体struct student s1[2] = {{"Tom", 18}, {"Jerry", 20}};// 打开要写入的文件FILE *p = fopen("D:/File/student.dat", "w");// 打开失败直接退出if(p == NULL)return 0;// 将结构体写出到文件中fwrite(s1, 2, sizeof (struct student), p);// 关闭文件fclose(p);// 读取文件中的结构体// 存储读取到的结构体数据struct student s2= {0};// 打开文件FILE *p2 = fopen("D:/File/student.dat", "r");// 如果打开失败, 退出if(p2 == NULL)return 0;while(1){// 每次读取一个结构体,fread(&s2, 1, sizeof (struct student), p2);// 如果读取到文件末尾, 则退出循环if(feof(p2))break;// 打印读取到的结构体数据printf("%s, %d\n", s2.name, s2.age);}return 0;
}
【C 语言】文件操作 ( 读取文件中的结构体数组 | feof 函数使用注意事项 )相关推荐
- c语言结构体数组存入文件_关于从文件中读取数据并写入结构体数组
已结贴√ 问题点数:25 回复次数:10 关于从文件中读取数据并写入结构体数组 各位大大好,本人新手一枚,最近写简单的通讯录的c程序,其他功能完好,最后一个将txt文件中的数据写入结构体数组的函数无法 ...
- java解析c语言的结构体,JAVA中如何实现C中的结构体数组的功能?
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 比如我想实现在C++中的结构体数组: struct student{ string Sno; string Sname; string Sgen; str ...
- 【C 语言】结构体 ( 结构体 数组 作为函数参数 | 数组 在 堆内存创建 )
文章目录 一.结构体 数组 作为函数参数 ( 数组 在 堆内存创建 ) 二.完整代码示例 一.结构体 数组 作为函数参数 ( 数组 在 堆内存创建 ) 在上一篇博客 [C 语言]结构体 ( 结构体 数 ...
- C语言数组、结构体、结构体数组作为函数参数
数组作为函数参数 如果想把一个数组名参数传递给函数,正确的函数形参应该是怎样的?它是应该声明为一个指针还是一个数组? 调用函数时实际传递的是一个指针,所以函数的形参实际上是一个指针,但为了使程序员新手 ...
- 【C 语言】结构体 ( 结构体 数组 作为函数参数 | 数组 在 栈内存创建 )
文章目录 一.结构体 数组 作为函数参数 ( 数组 在 栈内存创建 ) 二.完整代码示例 一.结构体 数组 作为函数参数 ( 数组 在 栈内存创建 ) 声明结构体类型 : 定义 结构体 数据类型 , ...
- python读文件操作-python文件操作读取文件写入文件
读取文件 要使用文本文件中的信息,首先需要将信息读取到内存中.为此,你可以一次性读取文件的全部内容,也可以以每次一行的方式逐步读取. 读取整个文件 要读取文件,需要一个包含几行文本的文件.下面首先来创 ...
- MATLAB中的结构体数组(struct)学习笔记
不要失却热情,不要丢掉冠军的心! MALAB中的结构体(struct)数组学习笔记 前言 1. 版本 2. 关键词 一.Struct结构体数组概述 二.Struct结构体数组基本用法 1. 结构体的创 ...
- C语言自定义数据类型(二)使用结构体数组
一个结构体变量中可以存放一组有关联的数据(如一个学生的学号.姓名.成绩等数据).如果有 10 个学生的数据需要参加运算,显然应该用数组,这就是结构体数组.结构体数组与以前介绍过的数值型数组的不同之处在 ...
- 83文件操作——读取文件
文章目录 1.读取指定字符 2.读取一行 3.读取全部行 4.想一想 在 Python中打开文件后,除了可以向其写入或追加内容,还可以读取文件中的内容.读取文件内容主要分为以下几种情况: 1.读取指定 ...
最新文章
- 极验行为验证的使用方法
- 每日一皮:这也许是稍微二字最好的诠释...
- Jackcard相似度和余弦相似度(向量空间模型)的java实现
- VS2005快捷键大全
- C语言fgets()函数(以指定长度读取文件中的字符,并存入字符数组变量中)
- [Selenium] 基本使用
- mysql group replication 安装配置详解
- php如何给数组取名,给表单取名可以为数组,并且可以通过php打印出来
- WCF,Net remoting,Web service概念(转)
- Flutter之基本数据类型测试
- POJ1179,P4342-[IOI1998]Polygon【区间dp】
- 动态添加模板列及保持页面状态
- π里包含了所有可能的数字组合吗?
- html拖拽模态框,可拖拽的谷歌样式纯javascript模态窗口插件
- JAVA学习:maven开发环境快速搭建
- 笔记----Linux中pt_regs结构体
- pytorch 训练face出现的问题
- 品味ZooKeeper之Watcher机制_2
- 相律公式表达式_第六章 相平衡主要公式及其适用条件
- iOS LeetCode ☞ Fizz Buzz