文章目录

  • 一、读取文件中的结构体数组 | 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 函数使用注意事项 )相关推荐

  1. c语言结构体数组存入文件_关于从文件中读取数据并写入结构体数组

    已结贴√ 问题点数:25 回复次数:10 关于从文件中读取数据并写入结构体数组 各位大大好,本人新手一枚,最近写简单的通讯录的c程序,其他功能完好,最后一个将txt文件中的数据写入结构体数组的函数无法 ...

  2. java解析c语言的结构体,JAVA中如何实现C中的结构体数组的功能?

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 比如我想实现在C++中的结构体数组: struct student{ string Sno; string Sname; string Sgen; str ...

  3. 【C 语言】结构体 ( 结构体 数组 作为函数参数 | 数组 在 堆内存创建 )

    文章目录 一.结构体 数组 作为函数参数 ( 数组 在 堆内存创建 ) 二.完整代码示例 一.结构体 数组 作为函数参数 ( 数组 在 堆内存创建 ) 在上一篇博客 [C 语言]结构体 ( 结构体 数 ...

  4. C语言数组、结构体、结构体数组作为函数参数

    数组作为函数参数 如果想把一个数组名参数传递给函数,正确的函数形参应该是怎样的?它是应该声明为一个指针还是一个数组? 调用函数时实际传递的是一个指针,所以函数的形参实际上是一个指针,但为了使程序员新手 ...

  5. 【C 语言】结构体 ( 结构体 数组 作为函数参数 | 数组 在 栈内存创建 )

    文章目录 一.结构体 数组 作为函数参数 ( 数组 在 栈内存创建 ) 二.完整代码示例 一.结构体 数组 作为函数参数 ( 数组 在 栈内存创建 ) 声明结构体类型 : 定义 结构体 数据类型 , ...

  6. python读文件操作-python文件操作读取文件写入文件

    读取文件 要使用文本文件中的信息,首先需要将信息读取到内存中.为此,你可以一次性读取文件的全部内容,也可以以每次一行的方式逐步读取. 读取整个文件 要读取文件,需要一个包含几行文本的文件.下面首先来创 ...

  7. MATLAB中的结构体数组(struct)学习笔记

    不要失却热情,不要丢掉冠军的心! MALAB中的结构体(struct)数组学习笔记 前言 1. 版本 2. 关键词 一.Struct结构体数组概述 二.Struct结构体数组基本用法 1. 结构体的创 ...

  8. C语言自定义数据类型(二)使用结构体数组

    一个结构体变量中可以存放一组有关联的数据(如一个学生的学号.姓名.成绩等数据).如果有 10 个学生的数据需要参加运算,显然应该用数组,这就是结构体数组.结构体数组与以前介绍过的数值型数组的不同之处在 ...

  9. 83文件操作——读取文件

    文章目录 1.读取指定字符 2.读取一行 3.读取全部行 4.想一想 在 Python中打开文件后,除了可以向其写入或追加内容,还可以读取文件中的内容.读取文件内容主要分为以下几种情况: 1.读取指定 ...

最新文章

  1. 极验行为验证的使用方法
  2. 每日一皮:这也许是稍微二字最好的诠释...
  3. Jackcard相似度和余弦相似度(向量空间模型)的java实现
  4. VS2005快捷键大全
  5. C语言fgets()函数(以指定长度读取文件中的字符,并存入字符数组变量中)
  6. [Selenium] 基本使用
  7. mysql group replication 安装配置详解
  8. php如何给数组取名,给表单取名可以为数组,并且可以通过php打印出来
  9. WCF,Net remoting,Web service概念(转)
  10. Flutter之基本数据类型测试
  11. POJ1179,P4342-[IOI1998]Polygon【区间dp】
  12. 动态添加模板列及保持页面状态
  13. π里包含了所有可能的数字组合吗?
  14. html拖拽模态框,可拖拽的谷歌样式纯javascript模态窗口插件
  15. JAVA学习:maven开发环境快速搭建
  16. 笔记----Linux中pt_regs结构体
  17. pytorch 训练face出现的问题
  18. 品味ZooKeeper之Watcher机制_2
  19. 相律公式表达式_第六章 相平衡主要公式及其适用条件
  20. iOS LeetCode ☞ Fizz Buzz

热门文章

  1. docker一次构建,快速部署
  2. 百度今晨7:20分“宕机”
  3. MySQL 5.1中IN查询不要用到NULL条件
  4. Fedora下校园网上网指南(802.1xDrcom)
  5. 数据流和十六进制转换
  6. Bootstrap UI 编辑器
  7. oracle to_char FM099999
  8. 自旋锁spinlock解析
  9. Mysql 查看、创建、更改 数据库和表
  10. Android签名机制之---签名验证过程详解