标准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.hqwc.cn/news/671289.html

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

相关文章

《QT实用小工具·五十八》模仿VSCode的可任意拖拽的Tab标签组

1、概述 源码放在文章末尾 该项目实现了模仿VSCode的可任意拖拽的Tab标签组&#xff0c;包含如下功能&#xff1a; 拖拽标签页至新窗口 拖拽标签页合并控件 无限嵌套的横纵分割布局&#xff08;类似Qt Creator的编辑框&#xff09; 获取当前使用的标签组、标签页 自动向上合并…

Listview控件的5种视图

在C#中&#xff0c;ListView控件是用于显示和编辑列表数据的常用控件。它可以显示数据项的列表&#xff0c;并允许用户对列表中的数据进行操作。 ListView控件有五种视图模式&#xff0c;分别是&#xff1a; LargeIcon视图&#xff1a;在此视图中&#xff0c;每个数据项都显示…

JVM之内存分配的详细解析

内存分配 两种方式 不分配内存的对象无法进行其他操作&#xff0c;JVM 为对象分配内存的过程&#xff1a;首先计算对象占用空间大小&#xff0c;接着在堆中划分一块内存给新对象 如果内存规整&#xff0c;使用指针碰撞&#xff08;Bump The Pointer&#xff09;。所有用过的内…

【Leetcode 42】 接雨水

基础思路&#xff1a; &#xff08;1&#xff09;需要将问题最小化&#xff0c;首先计算第i个位置最多容纳多少雨水&#xff08;细长的一条水柱&#xff09;&#xff0c;然后求和就是总的雨水量&#xff1b; &#xff08;2&#xff09;第i个位置容纳雨水量 min(左侧最高, 右…

【简单介绍下Debian常用命令】

&#x1f3a5;博主&#xff1a;程序员不想YY啊 &#x1f4ab;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f917;点赞&#x1f388;收藏⭐再看&#x1f4ab;养成习惯 ✨希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出…

Llama3-Tutorial之LMDeploy高效部署Llama3实践

Llama3-Tutorial之LMDeploy高效部署Llama3实践 Llama 3 近期重磅发布&#xff0c;发布了 8B 和 70B 参数量的模型&#xff0c;lmdeploy团队对 Llama 3 部署进行了光速支持&#xff01;&#xff01;&#xff01; 书生浦语和机智流社区同学光速投稿了 LMDeploy 高效量化部署 Llam…

#初始化列表

1.再谈构造函数 1.1构造函数的组成 构造函数包括函数体赋值与初始化列表初始化。 1.2函数体赋值 class Date { public:Date(int year, int month, int day){_year year;_month month;_day day;} private:int _year;int _month;int _day; };虽然上述构造函数调用之后&…

Burp和Proxifier抓包微信小程序

1、Burp设置代理 2、浏览器下载证书 3、安装证书 4、Proxifier设置代理 5、Proxifier设置Proxification Rule 6、Burp查看抓包数据 打开一个小程序&#xff0c;可以看到WeChatAppEx的流量先经过Proxifier&#xff0c;再经过127.0.0.1:8080到Burp

STM32F4xx开发学习—GPIO

GPIO 学习使用STM32F407VET6GPIO外设 寄存器和标准外设库 1. 寄存器 存储器映射 存储器本身是不具有地址的&#xff0c;是一块具有特定功能的内存单元&#xff0c;它的地址是由芯片厂商或用户分配&#xff0c;给存储器分配地址的过程就叫做存储区映射。给内存单元分配地址之后…

NFS共享存储服务配置实践

一、NFS 1.NFS定义 NFS&#xff08;Network File System&#xff09;网络文件服务&#xff1a;基于TCP/IP传输的网络文件系统协议&#xff0c;NFS服务的实现依赖于RPC&#xff08;Remote Process Call&#xff09;远端过程调用&#xff1a;通过使用NFS协议&#xff0c;客户机…

【WP】第一届 “帕鲁杯“ - CTF挑战赛 Web 全解

Web Web-签到 考点&#xff1a;审计py代码 from flask import Flask, request, jsonify import requests from flag import flag # 假设从 flag.py 文件中导入了 flag 函数 app Flask(__name__)app.route(/, methods[GET, POST]) def getinfo():url request.args.get(url)i…

Day62:单调栈 LeedCode503. 下一个更大元素 II 42. 接雨水

503. 下一个更大元素 II 给定一个循环数组 nums &#xff08; nums[nums.length - 1] 的下一个元素是 nums[0] &#xff09;&#xff0c;返回 nums 中每个元素的 下一个更大元素 。 数字 x 的 下一个更大的元素 是按数组遍历顺序&#xff0c;这个数字之后的第一个比它更大的数…