C //例10.4 从键盘输入10个学生的有关数据,然后把它们转存到磁盘文件上去。

C程序设计 (第四版) 谭浩强 例10.4

例10.4 从键盘输入10个学生的有关数据,然后把它们转存到磁盘文件上去。

IDE工具:VS2010
Note: 使用不同的IDE工具可能有部分差异。

 

代码块
方法:使用指针,函数的模块化设计,动态分配内存
说明:这里准备先写入的文件名称为Test.txt,文件已经存在于该项目目录下。
#include <stdio.h>
#include <stdlib.h>#define N 10//定义学生结构体
typedef struct{int num;char name[20];int age;char addr[15];
}Student;//初始化变量
void initialVar(Student **stu, int n, char **name){*stu = (Student*)malloc(n * sizeof(Student));*name = (char*)malloc(20 * sizeof(char));
}//输入学生信息
void inputStu(Student *stu, int n){printf("Enter %d students info:\n\n", n);int i = 0;for(Student *p = stu; p < stu + n; p++, i++){printf("Enter No.%d student number(100 ~ 999): ", i + 1);scanf("%d", &p->num);while(p->num < 100 || p->num > 999){printf("Number Error! Retry!\nEnter No.%d student number(100 ~ 999): ", i + 1);scanf("%d", &p->num);}fflush(stdin);printf("Enter No.%d studnet name: ", i + 1);gets(p->name);printf("Enter No.%d student age(6 ~ 35): ", i + 1);scanf("%d", &p->age);while(p->age < 6 || p->age > 35){printf("Age Error! Retry!\nEnter No.%d student age(6 ~ 35): ", i + 1);scanf("%d", &p->age);}fflush(stdin);printf("Enter No.%d student address: ", i + 1);scanf("%s", p->addr);printf("\n");}printf("\n");
}//输出学生信息
void outputStu(Student *stu, int n){printf("Student Info:\n");for(Student *p = stu; p < stu + n; p++){printf("Number: %-3d  Name: %-10s  Age: %-2d  Address: %-8s\n", p->num, p->name, p->age, p->addr);}printf("\n");
}//输入文件名并判断
void inputFileName(FILE **file, char *name){printf("Enter File Name: ");scanf("%s", name);*file = fopen(name, "rb");if(*file == NULL){perror("Cannot open this file");system("pause");exit(0);}*file = fopen(name, "wb");
}//将学生信息写入文件
void inputFile(FILE **file, Student *stu, int n){for(int i = 0; i < n; i++){if(fwrite(&stu[i], sizeof(Student), 1, *file) != 1){perror("File write error");system("pause");exit(0);}}fclose(*file);
}//读取文件中的学生信息
void outputFile(FILE **file, char *name, Student *stu, int n){*file = fopen(name, "rb");if(*file == NULL){perror("Cannot open this file");system("pause");exit(0);}printf("Read Student Info:\n");for(int i = 0; i < n; i++){fread(&stu[i], sizeof(Student), 1, *file);printf("Number: %-3d  Name: %-10s  Age: %-2d  Address: %-8s\n", stu[i].num, stu[i].name, stu[i].age, stu[i].addr);}printf("\n");fclose(*file);
}//释放变量内存
void freeVar(Student **stu, char **name){free(*stu);free(*name);
}int main(){FILE *file = NULL;Student *stu = NULL;char *name = NULL;initialVar(&stu, N, &name);inputStu(stu, N);outputStu(stu, N);inputFileName(&file, name);inputFile(&file, stu, N);outputFile(&file, name, stu, N);freeVar(&stu, &name);system("pause");return 0;
}
运行结果如下:

在这里插入图片描述
在这里插入图片描述

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

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

相关文章

普通方法和构造方法的创建调用和注意事项

普通方法 创建&#xff1a;只能基于类&#xff1b;调用&#xff1a;只能基于方法&#xff1b;语法&#xff1a;访问修饰符public 返回值类型||void 方法名&#xff08;[参数列表]&#xff09;{方法体}根据返回值的选择和参数列表的选择可以为普通方法归类出四种类型&#xff1…

文心一言大模型应用开发入门

本文重点介绍百度智能云平台、文心一言、千帆大模型平台的基本使用与接入流程及其详细步骤。 注册文心一言 请登录文心一言官方网站 https://yiyan.baidu.com/welcome 点击登录&#xff1b;图示如下&#xff1a; 请注册文心一言账号并点击登录&#xff0c;图示如下&#xff1…

Android12之MediaCodec硬编解码调试手段(四十九)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒体系统工程师系列【原创干货持续更新中……】🚀 人生格言: 人生从来没有捷径,只…

UVM:UVM的树形结构

UVM采用树形的组织结构来管理验证平台的各个部分。sequencer、driver、monitor、agent、model、 scoreboard、env等都是树的一个结点。为什么要用树的形式来组织呢&#xff1f;因为作为一个验证平台&#xff0c;它必须能够掌握自己治下的所 有“人口”&#xff0c;只有这样做了…

安防监控系统镜头选型分析,低噪声,低振动,多通道

安防镜头步进驱动选用型号 GC6107 C6109 GC6209 GC6119 GC6129 GC6139 GC6208 GC6150 GC6151 GC6152 GC6125 GC6236采用5V的镜头驱动 。其中GC6107 C6109 GC6209 GC6119 GC6129 GC6139 GC6208关键特性两通道&#xff0c;256细分&#xff0c;低噪&#xff0c;内部和外部时钟…

解决CentOS下PHP system命令unoconv转PDF提示“Unable to connect or start own listener“

centos系统下&#xff0c;用php的system命令unoconv把word转pdf时提示Unable to connect or start own listene的解决办法 unoconv -o /foo/bar/public_html/upload/ -f pdf /foo/bar/public_html/upload/test.docx 2>&1 上面这个命令在shell 终端能执行成功&#xff0c…

solidity案例详解(六)服务评价合约

有服务提供商和用户两类实体&#xff0c;其中服务提供商部署合约&#xff0c;默认诚信为true&#xff0c;用户负责使用智能合约接受服务及评价&#xff0c;服务提供商的评价信息存储在一个映射中&#xff0c;可以根据服务提 供商的地址来查找评价信息。用户评价信息&#xff0c…

HarmonyOS4.0从零开始的开发教程03初识ArkTS开发语言(中)

HarmonyOS&#xff08;二&#xff09;初识ArkTS开发语言&#xff08;中&#xff09;之TypeScript入门 浅析ArkTS的起源和演进 1 引言 Mozilla创造了JS&#xff0c;Microsoft创建了TS&#xff0c;Huawei进一步推出了ArkTS。 从最初的基础的逻辑交互能力&#xff0c;到具备类…

13年测试老鸟总结,性能测试常遇问题+解决方案+分析...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 1、内存溢出 1&a…

Cmkae外部依赖管理

文章目录 一、cmake依赖管理介绍二、源码依管理1. FetchContent与find_package进行集成 2. CPM3. git submodule附加&#xff1a; address_sanitizer 和 undefined sanitizer 一、cmake依赖管理介绍 CMake 是跨平台的构建系统&#xff0c;支持 C/C、Objective-C、Fortran 等多种…

Python第三次练习

Python 一、如何判断一个字符串是否是另一个字符串的子串二、如何验证一个字符串中的每一个字符均在另一个字符串中出现三、如何判定一个字符串中既有数字又有字母四、做一个注册登录系统 一、如何判断一个字符串是否是另一个字符串的子串 实现代码&#xff1a; string1 inp…

外包干了2个多月,技术明显有退步了。。。。。

先说一下自己的情况&#xff0c;本科生&#xff0c;19年通过校招进入武汉某软件公司&#xff0c;干了接近4年的功能测试&#xff0c;今年国庆&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测试…

JVM:强软弱虚四种引用

下面依次解释五种引用 一、强引用 把一个对象赋值给一个引用变量&#xff0c;就相当于把这个对象的强引用放到变量中。 只要对象可达&#xff0c; GC一定不会回收这个对象&#xff08;A1&#xff09; 二、软引用 当一个对象&#xff08;A2&#xff09;没有强引用时&#xff…

Rust UI开发(五):iced中如何进行页面布局(pick_list的使用)?(串口调试助手)

注&#xff1a;此文适合于对rust有一些了解的朋友 iced是一个跨平台的GUI库&#xff0c;用于为rust语言程序构建UI界面。 这是一个系列博文&#xff0c;本文是第五篇&#xff0c;前四篇链接&#xff1a; 1、Rust UI开发&#xff08;一&#xff09;&#xff1a;使用iced构建UI时…

网络安全(一)--网络环境构成,系统的安全

2. 网络攻防环境 目标 了解攻防环境构成了解入侵检测系统&#xff08;平台&#xff09;的部署位置 2.1. 环境构成 2.1.1. 环境框图 一个基本的网络攻防实验环境包括&#xff1a;靶机、攻击机、入侵检测分析系统、网络连接四部分组成。 一个基础的网络攻防实验环境需要如下…

【SpringCloud】通过Redis手动更新Ribbon缓存来解决Eureka微服务架构中服务下线感知的问题

文章目录 前言1.第一次尝试1.1服务被调用方更新1.2压测第一次尝试1.3 问题分析1.4 同步的不是最新列表 2.第二次尝试2.1调用方过滤下线服务2.2压测第二次尝试2.3优化 写到最后 前言 在上文的基础上&#xff0c;通过压测的结果可以看出&#xff0c;使用DiscoveryManager下线服务…

EasyExcel如何读取全部Sheet页数据方法

一、需求描述 Excel表格里面大约有20个sheet页&#xff0c;每个sheet页65535条数据&#xff0c;需要读取全部数据&#xff0c;并导入至数据库。 找了好多种方式&#xff0c;EasyExcel比较符合&#xff0c;下面看代码。 二、实现方式 采用EasyExcel框架的doReadAll()方法 1、…

Linux驱动开发学习笔记2《LED驱动开发试验》

目录 一、Linux下LED灯驱动原理 1.地址映射 二、硬件原理图分析 三、实验程序编写 1.LED 灯驱动程序编写 2.编写测试APP 四、运行测试 1.编译驱动程序和测试APP &#xff08;1&#xff09;编译驱动程序 &#xff08;2&#xff09;编译测试APP 2.运行测试 一、Linux下…

redis应用-分布式锁

目录 什么是分布式锁 分布式锁的基本实现 引入过期时间 引入校验id 引入lua 引入看门狗 引入redlock算法 什么是分布式锁 在一个分布式系统中,也会涉及到多个节点访问同一个公共资源的情况,此时就需要通过锁来做互斥控制,避免出现类似于"线程安全"的问题. 而…

Selenium无头模式容易遇到的坑

在无头模式下&#xff0c;我们看不到浏览器的操作&#xff0c;但是selenium无头模式的浏览器向服务器发送的请求头和正常模式下还是有点区别的&#xff0c;这就导致了一些网站会检测到我们是用selenium来访问的&#xff0c;从而导致一些问题 下面就是我在使用selenium无头模式时…