IO进程---day3

news2024/10/16 22:17:44

1、完成标准io的单字符实现两个文件的拷贝;

#include<myhead.h>

//标准io的单字符现两个文件的拷贝;
int main(int argc, const char *argv[])
{
	//判断是否有3个文件传入
	if(3 != argc){
		fputs("input file error\n",stderr);
		return -1;
	}

	//打开源文件
	FILE *src = fopen(argv[1] , "r");
	//判断源文件是否打开成功
	if(src == NULL){
		perror("fopen argv[1] error");
		return -1;
	}

	//打开目标文件
	FILE *dest = fopen(argv[2] , "w");
	//判断目标文件是否打开成功
	if(dest == NULL){
		perror("fopen argv[2] error ");
		return -1;
	}

	//定义变量读取数据
	while(1){
		int res = fgetc(src);
		if(res == EOF){
			break;
		}
		fputc(res, dest);  //将变量的数据写入目标文件中
		printf("读取到的数据为:%c\n",res);
	}
	
	//关闭文件
	fclose(src);
	fclose(dest);
	return 0;
}

 2、完成标准io的字符串实现两个文件的拷贝;

#include<myhead.h>

//标准io的字符串实现两个文件的拷贝

int main(int argc, const char *argv[])
{
	//判断是否有3个文件传入
	if(3 != argc){
		fputs("input file error\n",stderr);
		return -1;
	}

	//打开源文件
	FILE *src = fopen(argv[1] , "r");
	//判断源文件是否打开成功
	if(src == NULL){
		perror("fopen argv[1] error");
		return -1;
	}

	//打开目标文件
	FILE *dest = fopen(argv[2] , "w");
	//判断目标文件是否打开成功
	if(dest == NULL){
		perror("fopen argv[2] error ");
		return -1;
	}

	//定义字符数组接收读取源文件的数据
	char arr[20]="";
	while(1){
		char *res = fgets(arr,sizeof(arr),src);	
		if(res == NULL){
			break;
		}
		fputs(arr, dest);  //将变量的数据写入目标文件中
		printf("读取到的数据为:%s\n",res);
	}
	
	//关闭文件
	fclose(src);
	fclose(dest);
	return 0;
}

 3、完成标准io的格式化实现两个文件的拷贝;

#include<myhead.h>

//标准io的格式化实现两个文件的拷贝

int main(int argc, const char *argv[])
{
	//判断是否有3个文件传入
	if(3 != argc){
		fputs("input file error\n",stderr);
		return -1;
	}

	//打开源文件
	FILE *src = fopen(argv[1] , "r");
	//判断源文件是否打开成功
	if(src == NULL){
		perror("fopen argv[1] error");
		return -1;
	}

	//打开目标文件
	FILE *dest = fopen(argv[2] , "w");
	//判断目标文件是否打开成功
	if(dest == NULL){
		perror("fopen argv[2] error ");
		return -1;
	}

	//定义字符数组接收读取源文件的数据
	char a;
	while(1){
		int res = fscanf(src,"%c",&a);	
		if(res<1){
			break;
		}
		fprintf(dest,"%c",a);  //将变量的数据写入目标文件中
		printf("读取到的数据为:%c\n",a);
	}
	
	//关闭文件
	fclose(src);
	fclose(dest);
	return 0;
}

 

 

4、完成标准io的模块化实现两个文件的拷贝;

#include<myhead.h>

//标准io的模块化实现两个文件的拷贝
int main(int argc, const char *argv[])
{
	//判断是否有3个文件传入
	if(3 != argc){
		fputs("input file error\n",stderr);
		return -1;
	}

	//打开源文件
	FILE *src = fopen(argv[1] , "r");
	//判断源文件是否打开成功
	if(src == NULL){
		perror("fopen argv[1] error");
		return -1;
	}

	//打开目标文件
	FILE *dest = fopen(argv[2] , "w");
	//判断目标文件是否打开成功
	if(dest == NULL){
		perror("fopen argv[2] error ");
		return -1;
	}

	//定义字符数组接收读取源文件的数据
	char arr[20]="";
	while(1){
		int res = fread(arr,1,sizeof(arr),src);	
		if(res<1){
			break;
		}
		fwrite(arr,1,res, dest);  //将变量的数据写入目标文件中
		printf("读取到的数据为:%s\n",arr);
	}
	
	//关闭文件
	fclose(src);
	fclose(dest);
	return 0;
}

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

#include<myhead.h>

void menu();
void login_system();
int usr_login();
int usr_register();

int main(int argc, const char *argv[])
{
	
	login_system();
	return 0;
}

void menu()
{
	printf("\t\t********用户登录系统********\n");
	printf("\t\t1、登录\n");
	printf("\t\t2、注册\n");
	printf("\t\t3、退出系统\n");
}

//登录函数
int usr_login()
{
	//定义变量账号和密码
	char id[20]="";
	char password[20]="";
	printf("请输入登录账号:");
	scanf("%s",id);
	printf("请输入登录密码:");
	scanf("%s",password);

	//打开文件读取数据
	FILE *fp = fopen("./user.txt" , "r");
	//判断用户文件是否打开成功
	if(fp == NULL){
		perror("fopen user.txt error");
		return -1;
	}

	//定义两个字符数组接收用户文件的数据
	char arr[20]="";
	char brr[20]="";
	while(1){
		int res=fscanf(fp,"%s%s",arr,brr);
		if(res==EOF)
		break;
		if((strcmp(id,arr)==0)&&(strcmp(password,brr)==0))   //判断是否登录成功
		{
			printf("登录成功\n");
			return -1;
		}
		else
		{
			printf("登录失败\n");
			return -1;
		}
	}
	fclose(fp);
}

//注册函数
int usr_register()
{
	//定义变量账号和密码
	char re_id[20]="";
	char re_password[20]="";
	printf("请输入注册账号:");
	scanf("%s",re_id);
	printf("请输入注册密码:");
	scanf("%s",re_password);

	//打开文件写入数据
	FILE *fp = fopen("./user.txt" , "a+");
	//判断用户文件是否打开成功
	if(fp == NULL){
		perror("fopen user.txt error");
		return -1;
	}

	fprintf(fp,"%s %s\n",re_id,re_password);

	fclose(fp);
	printf("注册成功\n");


}

void login_system()
{
	int option;
	while (1)
	{
		menu();
		printf("请输入你的选择:");
		scanf("%d", &option);
		getchar(); // 清除输入缓冲区中的换行符
		switch (option)
		{
		case 1:				//登录
			usr_login();
			break;
		case 2:			   //注册
			usr_register();
			break;
		case 3:
			printf("退出系统\n");   // 退出系统
			exit(0);
		default:
			printf("输入有误,请重新输入\n");
			break;

		}
	}
}

效果展示:

 

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

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

相关文章

测试教程分享

前几年在腾讯课堂上发布了不少课程&#xff0c;后来腾讯课堂改革&#xff0c;要收会员费&#xff0c;课程还要抽提程&#xff0c;这么下来就相当于白干了。就放弃了在上面发课程&#xff0c;再后来腾讯课堂就关闭了&#xff0c;以前发布的视频就没有地方发了&#xff0c;于是我…

IDEA中git如何快捷的使用Cherry-Pick功能

前言 我们在使用IDEA开发时&#xff0c;一般是使用GIT来管理我们的代码&#xff0c;有时候&#xff0c;我们需要在我们开发的主分支上合并其他分支的部分提交代码。注意&#xff0c;是部分&#xff0c;不是那个分支的全部提交&#xff0c;这时候&#xff0c;我们就需要使用Che…

在Linux中搭建WordPress并实现Windows主机远程访问

WordPreWordPress是一个基于PHP开发的开源平台&#xff0c;适用于在支持PHP与MySQL数据库的服务器上搭建个性化博客或网站。同时&#xff0c;它也能够作为功能强大的内容管理系统&#xff08;CMS&#xff09;被广泛应用。 虚拟机&#xff1a;VirtualBox 虚拟机安装&#x1f449…

【更新】中国地区粮食播种、粮食产量、灾害等数据(1990-2023年)

数据为中国地区粮食播种、粮食产量、灾害等数据&#xff0c;包括369个指标&#xff0c;各类农作物播种面积、粮食产量、牲畜饲养、受灾面积等。这些指标综合反映了中国农业生产、粮食安全的相关情况 一、数据介绍 数据名称&#xff1a;中国地区粮食播种、粮食产量、灾害等数据…

RHCE---使用邮箱客户端s-nail

使用邮箱客户端s-nail 方案一&#xff1a;使用网易邮箱 1&#xff0c;挂载虚拟镜像 [rootlocalhost ~]# mount /dev/sr1 /mnt mount: /mnt: /dev/sr1 already mounted on /run/media/root/RHEL-9-3-0-BaseOS-x86_64.2&#xff0c;编辑环境文件 [rootlocalhost ~]# vim /et…

部署harbor问题(缺少ssl认证证书)

在部署harbor服务&#xff0c;/install.sh启动时&#xff0c;缺少ssl认证 1. 创建证书目录 首先&#xff0c;创建 /usr/local/harbor/ssl 目录&#xff1a; mkdir -p /usr/local/harbor/ssl 2. 生成私钥 生成一个 4096 位的 RSA 私钥&#xff1a; openssl genrsa -out /us…

【优秀Python大屏】全球肺癌患病人数分析与可视化展示

1. 项目背景 肺癌是全球范围内影响人类健康的重大疾病之一&#xff0c;了解不同地区、不同收入水平国家的肺癌患病人数分布以及不同年龄段的患病趋势&#xff0c;有助于全球卫生组织和研究人员制定更有效的防治策略。本次数据分析利用全球各洲和国家的肺癌患病数据&#xff0c…

了解专用代理服务器的功能

在当今数字化的环境中&#xff0c;确保安全高效的互联网连接变得至关重要。这种需求催生了专用代理服务器&#xff0c;这是一种确保在线隐私、安全和可访问性的强大工具。了解专用代理服务器的细微差别和功能对于寻求增强在线保护和访问的个人和企业是十分重要的。 一、什么是…

中标麒麟v5安装qt512.12开发软件

注意 需要联网操作 遇到问题1&#xff1a;yum提示没有可用软件包问题 终端执行如下命令 CentOS7将yum源更换为国内源保姆级教程 中标麒麟V7-yum源的更换&#xff08;阿里云源&#xff09; wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Cento…

Ingress-nginx中HTTPS的强制转发

文章目录 在使用aws 的NLB转发流量到ingress时&#xff0c;发现NLP上生成的转发配置不符合正常预期&#xff0c;如下图&#xff1a; ingress-nginx service 配置如下&#xff1a; apiVersion: v1 kind: Service metadata:annotations:service.beta.kubernetes.io/aws-load-b…

无人机集群路径规划:5种优化算法(SFOA、APO、GOOSE、CO、PIO)求解无人机集群路径规划,提供MATLAB代码

一、单个无人机路径规划模型介绍 无人机三维路径规划是指在三维空间中为无人机规划一条合理的飞行路径&#xff0c;使其能够安全、高效地完成任务。路径规划是无人机自主飞行的关键技术之一&#xff0c;它可以通过算法和模型来确定无人机的航迹&#xff0c;以避开障碍物、优化…

CSS网页布局(重塑网页布局)

一、实现两列布局 许多网站有一些特点&#xff0c;如页面顶部放置一个大的导航或广告条&#xff0c;右侧是链接或图片&#xff0c;左侧放置主要内容&#xff0c;页面底部放置版权信息等 一般情况&#xff0c;此类网页布局的两列都有固定的宽度&#xff0c;而且从内容上很容易区…

【C++】—通俗易懂的理解C++中的模板

文章目录 前言&#xff1a;&#x1f49e;1.函数模板&#x1f49e;1.1 函数模板的概念&#x1f49e;1.2 函数模板的格式&#x1f49e;1.3 函数模板的原理&#x1f49e;1.4 函数模板的实例化&#x1f49e;1.5 模板参数的匹配原则 &#x1f49e;2.类模板&#x1f49e;1.1 类模板的…

简单介绍$listeners

$listeners 它可以获取父组件传递过来的所有自定义函数&#xff0c;如下&#xff1a; // 父组件 <template><div class"a"><Child abab"handleAbab" acac"handleAcac"/></div> </template><script> impor…

【v5.3.0】修复订单批量发货提示 isPicUpload is not defined

使用订单批量发货的时候&#xff0c;没有反应&#xff0c;控制台提示 ReferenceError: isPicUpload is not defined 修改文件src/pages/order/orderList/components/tableList.vue 把isPicUpload改成isFileUpload&#xff0c;然后重新打包admin后台上传即可

音频分割:长语音音频 分割为 短语音音频 - python 实现

在做语音任务时&#xff0c;有是会用到的语音音频是长音频&#xff0c;这就需要我们将长音频分割为短音频。 该示例将声音的音量和静默时间结合作为语音的分割条件。 使用音量和静默时间结合的分割条件&#xff0c;能够比较好的进行自然断句&#xff0c;不会话语没有说完就切断…

【C++11】包装器:深入解析与实现技巧

C 包装器&#xff1a;深入解析与实现技巧 个人主页 C专栏 目录 引言包装器的定义与用途C 包装器的常见应用场景实现包装器的技巧使用 RAII 实现资源管理案例分析&#xff1a;智能指针模板包装器的应用包装器与设计模式性能优化更多应用案例总结 引言 C 是一门灵活且强大的语…

2024软考网络工程师笔记 - 第3章.广域通信网

文章目录 广域网物理层特性1️⃣公共交换电话网 PSTN2️⃣本地回路3️⃣机械特性4️⃣电气特性 &#x1f551;流量与差错控制1️⃣流量与差错控制2️⃣流量控制——亭等协议3️⃣流控机制——滑动窗口协议4️⃣差错控制5️⃣差错控制——停等协议6️⃣差错控制——选择重发ARQ协…

STARnak, LTR 模型笔记

未完成. 1. 简述 CIKM 23 的一篇论文, 任务为 Learning To Rank, 输入为 候选集合, 输出为 有序列表, 用于 top-n 推荐场景. 思考: 它是要替代 ctr 预估么?它跟 mind 这种召回, 有啥大的不一样么? 2. 网络结构 u u u: 将用户(或 query) 记为 u H q d X , d Y , . . . H…

SpringBoot3 + MyBatisPlus 快速整合

一、前言 MyBatis 最佳搭档&#xff0c;只做增强不做改变&#xff0c;为简化开发、提高效率而生。 这个发展到目前阶段已经很成熟了&#xff0c;社区也比较活跃&#xff0c;可以放心使用。官网地址&#xff1a;https://baomidou.com 二、快速开始 引入依赖 这里我引入了核心…