10.16标准IO

news2024/10/17 9:39:00

1、完成标准IO的单字符、字符串、格式化、模块化实现两个文件的拷贝;

单字符实现

#include <myhead.h>
int main(int argc, const char *argv[])
{
	//使用单字符完成两个文件拷贝
	FILE *fp_src=fopen(argv[1],"r");
	FILE *fp_dest=fopen(argv[2],"w");
	if(fp_src==NULL||fp_dest==NULL){
		perror("fopen error");
		return -1;
	}
	char ch;
	while(1){
		ch=fgetc(fp_src);
		if(feof(fp_src)){
			break;
		}
		fputc(ch,fp_dest);
	}
	fclose(fp_src);
	fclose(fp_dest);
	return 0;
}

字符串实现 

#include <myhead.h>
int main(int argc, const char *argv[])
{
	//使用字符串完成两个文件拷贝	
	FILE *fp_src=fopen(argv[1],"r");
	FILE *fp_dest=fopen(argv[2],"w");
	if(fp_src==NULL||fp_dest==NULL){
		perror("fopen error");
		return -1;
	}
	char temp[10]="";
	while(1){
	/*	char *res=fgets(temp,sizeof(temp),fp_src);
		if(NULL==res){
			break;
		}*/
		fgets(temp,sizeof(temp),fp_src);
		if(feof(fp_src)){//文件结束判断
			break;
		}
		fputs(temp,fp_dest);
	}
	fclose(fp_src);
	fclose(fp_dest);
	
	return 0;
}

格式化实现

#include <myhead.h>
#define MAX 3
typedef struct Student{//定义一个学生信息的结构体
	char name[20];
	int id;
	double chinese;
	double math;
	double english;
	double physical;
	double chemical;
	double biological;
}stu_t,*Pstu_t;
void input_stu(Pstu_t p){//在终端向p指向的空间输入学生信息
	int i;
	for(i=0;i<MAX;i++){//终端输入学生信息
		printf("请输入第%d个学生信息:",i+1);
		scanf("%s%d%lf%lf%lf%lf%lf%lf",(p+i)->name,&(p+i)->id,&(p+i)->chinese,
				&(p+i)->math,&(p+i)->english,&(p+i)->physical,&(p+i)->chemical,&(p+i)->biological);
	}
}
void save_stu(const char *file,Pstu_t p){//将p指向的学生信息内容保存到文件中
	FILE *fp=fopen(file,"w");
	if(NULL==fp){
		perror("文件打开失败");
		return;
	}
	int i;
	for(i=0;i<MAX;i++){
		fprintf(fp,"%s %d %.2lf %.2lf %.2lf %.2lf %.2lf %.2lf\n",(p+i)->name,(p+i)->id,(p+i)->chinese,
				(p+i)->math,(p+i)->english,(p+i)->physical,(p+i)->chemical,(p+i)->biological);
	}
	fclose(fp);
}
void load_stu(const char *file,Pstu_t p){//将文件中学生信息读取到p指向的空间中,并终端打印学生信息
	FILE *fp=fopen(file,"r");
	if(NULL==fp){
		perror("文件打开失败");
		return;
	}
	int i=0;
	while(1){//将文件中学生信息读取到p指向的空间中
		int res=fscanf(fp,"%s%d%lf%lf%lf%lf%lf%lf",(p+i)->name,&(p+i)->id,&(p+i)->chinese,
				&(p+i)->math,&(p+i)->english,&(p+i)->physical,&(p+i)->chemical,&(p+i)->biological);
		//对于%s%d%lf遇到与自己类型不匹配的情况时,读取结束,并且光标保持在与自己类型不匹配的字符上(包括空格和换行),但对于空格和换行是结束标志,同时,空格和换行结束后再读取可以跳过空格和换行继续读取与之匹配的内容,其他字符不可以实现
		//%c是所有字符都吸收,包括空格和换行
		if(EOF==res){
			break;
		}
		i++;
	}
	fclose(fp);
	for(i=0;i<MAX;i++){//终端打印学生信息
		printf("第%d个学生信息:\n姓名:%s\n学号:%d\n语文:%.2lf\n数学:%.2lf\n英语:%.2lf\n物理:%.2lf\n化学:%.2lf\n生物:%.2lf\n",i+1,
				(p+i)->name,(p+i)->id,(p+i)->chinese,(p+i)->math,(p+i)->english,(p+i)->physical,
				(p+i)->chemical,(p+i)->biological);
	}

}
int main(int argc, const char *argv[])
{
	//使用动态内存开辟空间实现
	Pstu_t p=(Pstu_t)malloc(sizeof(stu_t)*MAX);
	if(NULL==p){
		perror("空间开辟失败");
		return 1;
	}
	input_stu(p);
	save_stu(argv[1],p);
	Pstu_t ps=(Pstu_t)malloc(sizeof(stu_t)*MAX);
	if(NULL==ps){
		perror("空间开辟失败");
		return 1;
	}
	load_stu(argv[1],ps);
	free(p);
	p=NULL;
	free(ps);
	ps=NULL;
	return 0;
}

模块化实现

#include <myhead.h>
#define MAX 3
typedef struct node{
	char name[20];
	int age;
	float score;
}stu;
int main(int argc, const char *argv[])
{
	stu arr[MAX];
	int i=0;
	for(i=0;i<MAX;i++){
		printf("第%d个学生姓名:",i+1);
		scanf("%s",arr[i].name);
		printf("第%d个学生年龄:",i+1);
		scanf("%d",&arr[i].age);
		printf("第%d个学生成绩:",i+1);
		scanf("%f",&arr[i].score);
	}
	FILE *fp_w=fopen(argv[1],"w");
	if(fp_w==NULL){
		perror("file open error");
	}
	fwrite(arr,sizeof(stu),MAX,fp_w);//往文件中写入数据
	fclose(fp_w);
	FILE *fp_src=fopen(argv[1],"r");
	if(fp_src==NULL){
		perror("open scrfile error");
	}
	FILE *fp_dest=fopen(argv[2],"w");
	if(fp_dest==NULL){
		perror("open destfile error");
	}
	stu temp;
	while(1){
		size_t res=fread(&temp,sizeof(stu),1,fp_src);
		if(res==0){
			break;
		}		
		fwrite(&temp,sizeof(stu),res,fp_dest);
		printf("姓名:%s,年龄:%d,成绩:%.2f\n",temp.name,temp.age,temp.score);
	}
	fclose(fp_src);
	fclose(fp_dest);
	return 0;
}

 2、实现注册和登录功能,将注册账号和密码存储到文件中,登录时遍历文件如果存在就登录成功否则登录失败

#include <myhead.h>
typedef struct data{
	char load_name[20];
	char passwd[20];
}usr;
int main(int argc, const char *argv[])
{
	int input;
	while(1){
		printf("请输入功能:1.注册,2.登录,3.退出\n");
		scanf("%d",&input);
		FILE *fp=fopen(argv[1],"a+");
		usr temp;
		usr temp_cmp;
		usr buf;
		int flag=0;
		int res;
		switch(input){
			case 1:
				//注册账号
				printf("请输入用户名:\n");
				scanf("%s",temp.load_name);
				printf("请输入密码:\n");
				scanf("%s",temp.passwd);
				res=fwrite(&temp,sizeof(temp),1,fp);
				if(res==1){
					printf("注册成功\n");
				}	
				break;
			case 2:
				//登录账号
				printf("请输入用户名:\n");
				scanf("%s",buf.load_name);
				printf("请输入密码:\n");
				scanf("%s",buf.passwd);
				while(1){
					fread(&temp_cmp,sizeof(usr),1,fp);
					if(feof(fp)){
						break;
					}
					if((strcmp(buf.load_name,temp_cmp.load_name)==0)&&\
							(strcmp(buf.passwd,temp_cmp.passwd)==0)){
						printf("登录成功\n");
						flag=1;
						break;
					}
				}
				if(0==flag){
					printf("登录失败\n");
				}
				break;
			case 3:
				exit(0);
				break;
		}
		fclose(fp);
	}
	return 0;
}

代码结果:

 

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

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

相关文章

猪圈密码简单实例

猪圈密码简单实例 猪圈密码表 根据上面的密码表&#xff0c;得到每个字母所对应的符号如下 例如单词the的加密结果为&#xff1a;

IO编程--单字符、字符串、格式化、模块化实现文件拷贝以及登录注册

一、完成标准io的单字符、字符串、格式化、模块化实现两个文件的拷贝 代码如下&#xff1a; 1.单字符 #include <myhead.h> int main(int argc, const char *argv[]) {//打开文件FILE* fpfopen("test.txt","r"); FILE* fqfopen("copy_test.txt&…

leetcode:744. 寻找比目标字母大的最小字母(python3解法)

难度&#xff1a;简单 给你一个字符数组 letters&#xff0c;该数组按非递减顺序排序&#xff0c;以及一个字符 target。letters 里至少有两个不同的字符。 返回 letters 中大于 target 的最小的字符。如果不存在这样的字符&#xff0c;则返回 letters 的第一个字符。 示例 1&a…

2024国际潜水小姐大赛中国区总决赛盛典在广州举行,吉林选手张潇文获冠军!

传承“以美之名&#xff0c;保护海洋”的精神&#xff0c;2024年10月15日晚&#xff0c;2024国际潜水小姐大赛中国区总决赛盛典在广州渔民新村隆重举行&#xff01;来自全国多个城市&#xff0c;经过层层选拔产生的20位佳丽齐聚广州&#xff0c;以独特的女性水下之美和健康美&a…

初识算法 · 二分查找(1)

目录 前言&#xff1a; 二分查找 题目解析 算法原理 算法编写 搜索插入位置 题目解析 算法原理 算法编写 前言&#xff1a; 本文呢&#xff0c;我们从滑动窗口窗口算法移步到了二分查找算法&#xff0c;我们简单了解一下二分查找算法&#xff0c;二分查找算法是一个十…

安科瑞末端组合式智慧用电装置在高校宿舍中的应用

1相关背景 学校宿舍用电隐患 安全用电历来都是学校安全工作的一个重点&#xff0c;然而每年因此发生的人身伤害以及火灾事故却在继续&#xff0c;究其原因&#xff0c;主观上是我们的防患意识淡薄&#xff0c;客观上则是由于学生在宿舍使用违规电器、乱拉电线造成的。 现代的…

Java IO 基础知识

IO 流简介 IO 即 Input/Output&#xff0c;输入和输出。数据输入到计算机内存的过程即输入&#xff0c;反之输出到外部存储&#xff08;比如数据库&#xff0c;文件&#xff0c;远程主机&#xff09;的过程即输出。数据传输过程类似于水流&#xff0c;因此称为 IO 流。IO 流在…

java关于如何实现读取各种类型的文件核心属性方法,比如获取标题和作者、主题等;附带远程的https的地址文件读取方法;

有两种方法&#xff1a; 通过提供的现成api进行调用读取pdf文件&#xff0c;或doc、xlsx、pptx文件&#xff1b;可能商业需要付费 https://www.e-iceblue.cn/pdf_java_document_operation/set-pdf-document-properties-in-java.html Spire.PDF for Java import com.spire.pdf…

为什么SSH协议是安全的?

SSH的传输层协议&#xff08;Transport Layer Protocol&#xff09;和用户鉴权协议&#xff08;Authentication Protocol&#xff09;确保数据的传输安全&#xff0c;这里只介绍传输层协议&#xff0c;是SSH协议的基础。 本文针对SSH2协议。 1、客户端连接服务器 服务器默认…

基于springboot实习管理系统

作者&#xff1a;计算机学长阿伟 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、ElementUI等&#xff0c;“文末源码”。 系统展示 【2024最新】基于JavaSpringBootVueMySQL的&#xff0c;前后端分离。 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;…

k8s use-context是什么

kubectl 的 use-context 命令用于在 Kubernetes 集群中切换上下文&#xff08;context&#xff09;&#xff0c;从而方便地在多个集群或命名空间之间进行操作。一个上下文定义了 kubectl 使用的 集群、用户 和 命名空间 的组合。 use-context 的作用&#xff1a; 每个上下文&…

msql事务隔离级别 线上问题

1. 对应代码 解决方式&#xff1a; 在事务隔离级别为可重复读&#xff08;RR&#xff09;时&#xff0c;数据库确实通常会记录当前数据的快照。 在可重复读隔离级别下&#xff0c;事务在执行期间看到的数据是事务开始时的数据快照&#xff0c;即使其他事务对数据进行了修改&am…

考研前所学c语言02(2024/10/16)

1.一个十进制的数转化为二进制的就是不断除二取余&#xff0c;得到的余数从下到上取 比如123&#xff1a; 结果为&#xff1a; 同理其他的十进制转八进制&#xff0c;十六进制就除八&#xff0c;除十六即可 再比如123转十六进制&#xff1a; 因为余数是11&#xff0c;十六进…

超详细的finalshell安装数据库以及数据库的基本操作

一、下载 MySQL Enterprise Edition Downloads | Oraclehttps://www.oracle.com/mysql/technologies/mysql-enterprise-edition-downloads.html 这边有不同的版本&#xff0c;要看你的操作系统&#xff08;centos7 / centos8&#xff09;安装的是哪个版本 我把连接提取出来了&…

Vivado - Aurora 8B/10B IP

目录 1. 简介 2. 设计调试 2.1 Physical Layer 2.2 Link Layer 2.3 Receiver 2.4 IP 接口 2.5 调试过程 2.5.1 Block Design 2.5.2 释放 gt_reset 2.5.3 观察数据 3. 实用技巧 3.1 GT 坐标与布局 3.1.1 选择器件并进行RTL分析 3.1.2 进入平面设计 3.1.3 收发器布…

stm32 F4和F7的硬件CRC保持一致的设置

stm32F4系列的CRC没什么设置选项 逆向一下算法&#xff1a;http://www.ip33.com/crc.html 在stm32F7里面&#xff0c;CRC设置很丰富&#xff0c;如下设置可以和f4算出来的保持一致

HCIP——以太网交换安全(四)DHCP Snooping

目录 一、DHCP Snooping的知识点 二、DHCP Snooping实验拓扑 三、总结 一、DHCP Snooping的知识点 1.1、DHCP snooping 概述&#xff1a; ①DHCP Snooping使能DHCP的一种安全特性&#xff0c;用于保证DHCP客户端从合法的DHCP服务端获取IP地址。DHCP服务器记录DHCP客户端IP…

沐风老师3DMAX地形散布插件TerrainScatter使用方法详解

3DMAX地形散布插件TerrainScatter&#xff0c;根据画定的区域范围和地形起伏&#xff0c;一键种植树木、批量摆放建筑等&#xff0c;对于熟练3dmax的用户&#xff0c;也可以使用TerrainScatter插件制作屋顶摆放瓦片的效果。该插件工作方式是将源对象的副本放置到闭合曲线范围内…

香港科技大学广州|可持续能源与环境学域博士招生宣讲会—大连理工大学专场!!!(暨全额奖学金政策)

香港科技大学广州&#xff5c;可持续能源与环境学域博士招生宣讲会—大连理工大学专场&#xff01;&#xff01;&#xff01;&#xff08;暨全额奖学金政策&#xff09; ⏰时间&#xff1a;2024年10月24日&#xff08;星期四&#xff09;16:00 &#x1f3e0;地点&#xff1a;…

【刷题册】2024.10.13 - 2024.10.15

目录 一、2024.10.131.1 BC153 [NOIP2010]数字统计1.2 NC313 两个数组的交集1.2.1 思路一&#xff1a;暴力O(N^2)1.2.2 思路二&#xff1a;hash 1.3 AB5 点击消除 二、2024.10.142.1 BC64⽜⽜的快递2.2 DP4 最⼩花费爬楼梯2.3 数组中两个字符串的最⼩距离 三、2024.10.153.1 BC…