标准IO学习

思维导图:

有如下结构体
struct Student{
char name[16];
int age; double math_score;
double chinese_score;
double english_score;
double physics_score;
double chemistry_score;
double bio_score; };
申请该结构体数组,容量为5,初始化5个学生的信息
使用fprintf将数组中的5个学生信息,保存到文件中去 下一次程序运行的时候,使用fscanf,
将文件中的5个学生信息,写入(加载)到数组中去,并直接输出学生信息

代码:
 

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <pthread.h>
#include <semaphore.h>
#include <wait.h>
#include <signal.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <sys/socket.h>
#include <sys/ipc.h>
#include <sys/sem.h>
#include <semaphore.h>
#include <sys/msg.h>
#include <sys/shm.h>
#include <sys/un.h>
#define MAX 5
typedef struct Student{char name[16];int age;double math_score;double chinese_score;double english_score;double physics_score;double chemistry_score;double dio_score;
}std,*std_p;
int main(int argc, const char *argv[])
{std_p S=(std_p)malloc(sizeof(std)*MAX);if(S==NULL){printf("fail to apply!\n");return -1;}for(int i=0;i<MAX;i++){printf("please enter name:");gets((S+i)->name);printf("please enter age:");scanf("%d",&(S+i)->age);printf("please enter math_score:");scanf("%lf",&(S+i)->math_score);printf("please enter chinese_score:");scanf("%lf",&(S+i)->chinese_score);printf("please enter english_score:");scanf("%lf",&(S+i)->english_score);printf("please enter physics_score:");scanf("%lf",&(S+i)->physics_score);printf("please enter chemistry_score:");scanf("%lf",&(S+i)->chemistry_score);printf("please enter dio_score:");scanf("%lf",&(S+i)->dio_score);getchar();putchar(10);}FILE* fp=fopen("./text","a");if(fp==NULL){perror("fppen");return 1;}for(int i=0;i<MAX;i++){fprintf(fp,"%s\n",(S+i)->name);fprintf(fp,"%d\n",(S+i)->age);fprintf(fp,"%lf\n",(S+i)->math_score);fprintf(fp,"%lf\n",(S+i)->chinese_score);fprintf(fp,"%lf\n",(S+i)->english_score);fprintf(fp,"%lf\n",(S+i)->physics_score);fprintf(fp,"%lf\n",(S+i)->chemistry_score);fprintf(fp,"%lf\n",(S+i)->dio_score);}fclose(fp);FILE* fp1=fopen("./text","a+");if(fp==NULL){perror("fopen");return 1;}for(int i=0;i<MAX;i++){fscanf(fp1,"%s\n",(S+i)->name);fscanf(fp1,"%d\n",&(S+i)->age);fscanf(fp1,"%lf\n",&(S+i)->math_score);fscanf(fp1,"%lf\n",&(S+i)->chinese_score);fscanf(fp1,"%lf\n",&(S+i)->english_score);fscanf(fp1,"%lf\n",&(S+i)->physics_score);fscanf(fp1,"%lf\n",&(S+i)->chemistry_score);fscanf(fp1,"%lf\n",&(S+i)->dio_score);}fclose(fp1);for(int i=0;i<MAX;i++){printf("name:%s\n",(S+i)->name);printf("age:%d\n",(S+i)->age);printf("math_score:%lf\n",(S+i)->math_score);printf("chinese_score:%lf\n",(S+i)->chinese_score);printf("english_score:%lf\n",(S+i)->english_score);printf("physics_score:%lf\n",(S+i)->physics_score);printf("chemistry_score:%lf\n",(S+i)->chemistry_score);printf("dio_score:%lf\n",(S+i)->dio_score);}return 0;
}

终端运行结果:

保存文件内容:

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

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

相关文章

uniapp 应用闪退、崩溃异常日志捕获插件(可对接网络上报)插件 Ba-Crash

应用闪退、崩溃异常日志捕获插件&#xff08;可对接网络上报&#xff09; Ba-Crash 简介&#xff08;下载地址&#xff09; Ba-Crash 是一款uniapp应用闪退、崩溃异常日志捕获插件&#xff0c;支持对接网络上报、设置提示等等&#xff0c;方便对一些远程问题、原生问题进行分…

关于基本算法思想这一篇就够了

递推算法基本思想 递推算法是通过已知条件&#xff0c;利用特定关系得出中间结论&#xff0c;直至得到最后结果的算法。递推算法按照一定的规律来计算序列中的每一项&#xff0c;通常是通过计算机器前一项&#xff08;或前几项&#xff09;的值来推出当前项的值。 示例&#…

Linux-信号概念

1. 什么是信号 信号本质是一种通知机制&#xff0c;用户or操作系统通过发送信号通知进程&#xff0c;进程进行后续处理 在日常生活中就有很多例子&#xff0c;比如打游戏方面王者荣耀的“进攻”&#xff0c;“撤退”&#xff0c;“请求集合”&#xff0c;“干得漂亮&#xff01…

【数据结构】有关环形链表题目的总结

文章目录 引入 - 快慢指针思考 - 快慢指针行走步数进阶 - 寻找环形链表的头 引入 - 快慢指针 141-环形链表 - Leetcode 关于这道题&#xff0c;大家可以利用快慢指针&#xff0c;一个每次走两步&#xff0c;一个每次走一步&#xff0c;只要他们有一次相撞了就代表说这是一个链…

ue引擎游戏开发笔记(33)——武器与角色的匹配,将新武器装备到角色身上

1.需求分析&#xff1a; 武器能出现在世界中&#xff0c;完成了第一步&#xff0c;下一步需要角色和武器适配&#xff0c;即不论角色跑动&#xff0c;射击等&#xff0c;武器和角色都相匹配&#xff0c;将武器装备到角色身上。 2.操作实现&#xff1a; 1.首先先把角色原有的武…

如何保证Redis双写一致性?

目录 数据不一致问题 数据库和缓存不一致解决方案 1. 先更新缓存&#xff0c;再更新数据 该方案数据不一致的原因 2. 先更新数据库&#xff0c;再更新缓存 3. 先删除缓存&#xff0c;再更新数据库 延时双删 4. 先更新数据库&#xff0c;再删除缓存 该方案数据不一致的…

LeetCode 226.翻转二叉树(全网最多的解法)

LeetCode 226.翻转二叉树 1、题目 题目链接&#xff1a;226. 翻转二叉树 给你一棵二叉树的根节点 root &#xff0c;翻转这棵二叉树&#xff0c;并返回其根节点。 示例 1&#xff1a; 输入&#xff1a;root [4,2,7,1,3,6,9] 输出&#xff1a;[4,7,2,9,6,3,1]示例 2&#…

股票一级市场和二级市场什么意思

股票一级市场和二级市场是股票市场的两个重要组成部分&#xff0c;它们的主要区别在于交易的性质和市场角色。 一级市场&#xff08;Primary Market&#xff09;&#xff0c;也称为发行市场&#xff08;Issuance Market&#xff09;&#xff0c;是指公司直接或通过中介机构向…

Sentinel流量防卫兵

1、分布式服务遇到的问题 服务可用性问题 服务可用性场景 服务雪崩效应 因服务提供者的不可用导致服务调用者的不可用,并将不可用逐渐放大的过程&#xff0c;就叫服务雪崩效应导致服务不可用的原因&#xff1a; 在服务提供者不可用的时候&#xff0c;会出现大量重试的情况&…

Terraform模块元参数

在Terraform 0.13之前&#xff0c;模块在使用上存在一些限制。 例如通过模块来创建EC2主机&#xff0c;可以这样&#xff1a; module "ec2_instance" {source "terraform-aws-modules/ec2-instance/aws"version "~> 3.0"name "sing…

vue中的store

1.什么是store 在 Vue.js 应用中&#xff0c;"store" 通常指的是 Vuex。Vuex 是一个专门为 Vue.js 应用开发的状态管理库&#xff0c;它能够帮助你在应用中更好地管理和共享状态。以下是 Vuex 的一些简单介绍&#xff1a; 状态管理&#xff1a;Vuex 允许你将应用中的…

Flink时间语义 | 大数据技术

⭐简单说两句⭐ ✨ 正在努力的小叮当~ &#x1f496; 超级爱分享&#xff0c;分享各种有趣干货&#xff01; &#x1f469;‍&#x1f4bb; 提供&#xff1a;模拟面试 | 简历诊断 | 独家简历模板 &#x1f308; 感谢关注&#xff0c;关注了你就是我的超级粉丝啦&#xff01; &a…

爬虫学习(2)破解百度翻译

代码 import requests import jsonif __name__ "__main__":url https://fanyi.baidu.com/sug#post请求参数处理&#xff08;同get请求一致&#xff09;headers {"User-Agent": Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, …

基于Springboot的果蔬作物疾病防治系统(有报告)。Javaee项目,springboot项目。

演示视频&#xff1a; 基于Springboot的果蔬作物疾病防治系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系…

ICode国际青少年编程竞赛- Python-1级训练场-识别循环规律1

ICode国际青少年编程竞赛- Python-1级训练场-识别循环规律1 1、 for i in range(4):Dev.step(6)Dev.turnLeft()2、 for i in range(3):Dev.turnLeft()Dev.step(2)Dev.turnRight()Dev.step(2)3、 for i in range(3):Spaceship.step(5)Spaceship.turnLeft()Spaceship.step(…

spi 驱动总结

0. 源码 结构 drivers/spi/spi.c 对应spi 核心 drivers/spi/spidev.c 对应spi 设备驱动 drivers/spi/spi-bcm2835.c 对应spi 控制器驱动 1. 数据发送: ctrl->transfer_one 的实现 2. 注册子设备 int spi_register_controller(struct spi_controller *ctlr) 注册spi 控…

算法训练营day31

一、贪心算法理论基础 在问题的每个决策阶段&#xff0c;都选择当前看起来最优的选择&#xff0c;即贪心地做出局部最优的决策&#xff0c;以期获得全局最优解。 最好用的策略就是举反例&#xff0c;如果想不到反例&#xff0c;那么就试一试贪心吧。 动态规划和贪心的区别 …

TypeScipt 联合类型 | 号的使用

联合类型有两种使用方法&#xff1a; 一种类型中多个可能的值。具有多种不同的类型中的一种。 一种类型中多个可能的值。 type isAye true | false;const aye:isAye true; const aye1:isAye false; const aye2:isAye 3; // Type number is not assignable to type isAye…

编译原理的基本概念、发展历程、主要内容和实际应用

**编译原理** 一、引言 编译原理是计算机专业的一门核心课程&#xff0c;旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分&#xff0c;也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和…

Linux字符设备驱动(一) - 框架

字符设备是Linux三大设备之一(另外两种是块设备&#xff0c;网络设备)&#xff0c;字符设备就是字节流形式通讯的I/O设备,绝大部分设备都是字符设备&#xff0c;常见的字符设备包括鼠标、键盘、显示器、串口等等&#xff0c;当我们执行ls -l /dev的时候&#xff0c;就能看到大量…