有时候,我们需要将输入的数据存储起来,这时候就需要用到文件,对于C语言而言,文件的读写有多种方式,下面主要是结构体文件的读写,例如student.dat(第一列是学号,第二列是姓名)

20180001    xiaoming
20180002    小明

1.定义结构体

//定义一个结构体
typedef struct Student{int stu_id;char name[100];
} Stu;

2.写数据

// 定义一个文件指针
FILE *fp ;// 初始化一个结构体数组
Stu stuw[2] = {
{20180001, "xiaoming" },
{20180002, "小明"}
} ;// 打开文件,没有文件自动创建
fp = fopen("student.dat","wb"); // b:表示以二进制写入// 写入数据
fwrite( (char*)stuw,sizeof(Stu),2,fp); //2:表示将数组中两个元素写入文件
// 关闭文件
fclose(fp);

3.读数据

// 定义一个文件指针
FILE *fp ;
// 定义一个buf结构体,用于得到文件内容
struct stat buf;
// 定义一个文件行数记录变量
int rows;
// 定义一个Student结构体
Stu stur[MAX]; // MAX通过#define设置为100// 求文件中的行数(记录个数)
stat("student.dat",&buf);
rows = buf.st_size/sizeof(Stu);// 打开文件
fp = fopen("student.dat","rb");
// 读取数据到数组中
fread((char *)stur,sizeof(Stu),rows,fp);
// 关闭文件
fclose(fp);// 遍历数组,打印数据信息
for(int i=0;i<rows;i++)printf("%d\t%s\n",stur[i].stu_id,stur[i].name);

具体demo.c

#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#define MAX 100//定义一个结构体
typedef struct Student{int stu_id;char name[100];
} Stu;int main(int argc, char const *argv[]) {/* code */// 声明函数void Write();void Read();// 函数调用
  Write();Read();return 0;
}/* 数据写入文件 */
void Write(){// 定义一个文件指针FILE *fp ;// 初始化一个结构体数组Stu stuw[2] = {{20180001, "xiaoming" },{20180002, "小明"}} ;// 打开文件,没有文件自动创建fp = fopen("student.dat","wb"); // b:表示以二进制写入// 写入数据fwrite( (char*)stuw,sizeof(Stu),2,fp); //2:表示将数组中两个元素写入文件// 关闭文件
  fclose(fp);}// 文件数据读取
void Read(){// 定义一个文件指针FILE *fp ;// 定义一个buf结构体,用于得到文件内容struct stat buf;// 定义一个文件行数记录变量int rows;// 定义一个Student结构体
  Stu stur[MAX];// 求文件中的行数(记录个数)stat("student.dat",&buf);rows = buf.st_size/sizeof(Stu);// 打开文件fp = fopen("student.dat","rb");// 读取数据到数组中fread((char *)stur,sizeof(Stu),rows,fp);// 关闭文件
  fclose(fp);// 遍历数组,打印数据信息for(int i=0;i<rows;i++)printf("%d\t%s\n",stur[i].stu_id,stur[i].name);}

转载于:https://www.cnblogs.com/xiaomingzaixian/p/9402010.html

C语言文件读写(结构体文件)相关推荐

  1. 学生管理系统 C语言 动态链表 结构体 文件操作 设置密码 输入密码回显星号

    C语言 学生管理系统代码 实现功能 功能:学生管理系统设计,每个学生信息作为一条记录,包括姓名.学号.专业.  性别.年龄.   电话.家庭住址.还可以继续拓展 系统要求实现以下功能: 1.输入功能: ...

  2. Win32:INI文件读写结构体/Int/String/遍历

    目录 一.INI的结构和用途 1.1 格式 1.2 INI文件示例 1.3 实例 二.怎么写入一个节Section 三.怎么读/写键值对 3.1.读/写String 3.2.读/写Int 3.3.读/ ...

  3. c语言怎么往结构体中传数据,怎么把文件数据写入结构体 c语言 怎么将结构体写入文件...

    怎么把结构体的数据写到文件中 C语言把一个结构体数组写入文件分三步: 以二进制写方式(wb)打开文件 调用写入函数fwrite()将结构体数据写入文件 关闭文件指针 相应的,读文件也要与之匹配: 以二 ...

  4. 黄浩老师cpp平时作业(十一)矩阵乘法矩形类读写文件与结构体

    "读写文件与结构体"这道题被我跳过去了 理由:它是个压缩包,第一次整体写题的时候按word写把它给忘了:它太麻烦了码量太大现在没时间(懒,得,理,直,气,壮) //后记 诶呀,我在 ...

  5. c语言文件和结构体,C语言 文件操作 结构体与文件 fgetc fputc fread fwrite

    #include #include /*C语言 将键盘输入的字符写入文件*/ int main(int argc, char* argv[]) { FILE *fp; //文件指针 char str1 ...

  6. c语言 读程序写入结构体,C语言文件写入结构体的乱码解决方法

    C语言中用 fwrite 向文件写入结构体时出现乱码的解决方法,由于fwrite是用于二进制文件的,所以打开直接写入的文件是会出现乱码,这时需要一个中间文件来存储临时数据,就是先将数据存储在一个临时文 ...

  7. c语言发送结构体 文件

    Linux C Socket编程发送结构体.文件详解及实例 利用Socket发送文件.结构体.数字等,是在Socket编程中经常需要用到的.由于Socket只能发送字符串,所以可以使用发送字符串的方式 ...

  8. c语言动态生成结构体结构,C语言实现动态结构体数组

    C语言实现动态结构体数组 原因是因为以前使用C++来实现的,主要用VERCTOR C++标准库的失代器 而不是纯C:C++是C语言的超集,除了包含C外,还有C++各种新语法,新库! 不过虽然C++用起 ...

  9. c语言 static结构体,C语言实现动态结构体数组

    C语言实现动态结构体数组 祖仙教小凡仙 海鲨数据库架构师 C语言实现动态结构体数组 原因是因为以前使用C++来实现的,主要用VERCTOR C++标准库的失代器 而不是纯C:C++是C语言的超集,除了 ...

最新文章

  1. linux c编程之fcntl
  2. 调试模式和定时器,看门狗和嘀嗒定时器
  3. 搞科研不如当老师香?南科大助理教授“跳槽”深圳中学当老师
  4. OpenGL模板 Mac Cmake OpenGL(Glut) Template
  5. Struts2新特性
  6. 使用显式Intent向下一个活动传递数据
  7. 从零入门 Serverless | 架构的演进
  8. vue定义一个变量并显示
  9. 【零基础学Java】—类的定义(七)
  10. Android开发案例 点击按钮出现 简易的消息提示框
  11. 对外汉语偏误语料库_哇,9大对外汉语必备语料库,每个都很有“性格”!!...
  12. linux之svn回滚/回退到某个版本
  13. ass translation python(ass字幕文件半自动平移时间轴py脚本)
  14. 【ONE·Linux || 权限 】
  15. python中的关系运算符可以连续室友_在Python中,关系运算符可以连续使用,例如135等价于13 and 35。...
  16. MATLAB中mat转换为xlsx表格数据
  17. Java中的字符串反转方法
  18. initWithFrame/initWithCode/awakeFromNib调用
  19. 关于linux音频JACK的那些事情……
  20. GO 工作区和GOPATH

热门文章

  1. java as uuid_java UUID 源码学习
  2. java返回json格式的状态码数据(二)
  3. Docker(一)Centos7.0安装Docker
  4. java的poi导出Excel文件
  5. 人工机器:Jetson Nano 安装Qt5
  6. AI:IPPR的数学表示-CNN结构/参数分析
  7. 指定输出路径_新手Python必须知道的文件路径和变量命名技巧
  8. python实战,教你用微信每天给女朋友说晚安
  9. pycharm快敏捷键
  10. python 的下划线_