10.16标准IO作业

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

cpp 复制代码
#include<myhead.h>
int main(int argc, const char *argv[])
{
	//判断外部输入文件个数 是否为3
	if(argc != 3)
	{
		printf("外部输入的文件个数有误\n");
		return -1;
	}
	//以只读的形式打开文件2
	FILE *fp = fopen(argv[1],"r");
	if(NULL == fp)
	{
		perror("fopen error");
		return -1;
	}

	//以只写的形式打开文件3
	FILE *fp2 = fopen(argv[2],"w");
	if(NULL == fp2)
	{
		perror("fopen error");
		return -1;
	}
	while(1)
	{
		printf("1、以单字符实现两个文件的拷贝\n");
		printf("2、以字符串实现两个文件的拷贝\n");
		printf("3、以格式化实现两个文件的拷贝\n");
		printf("4、以模块化实现两个文件的拷贝\n");
		printf("5、退出");
		printf("请输入你的选择:");
		int n;
		scanf("%d",&n);
		switch(n)
		{
			case 1:{
					   //定义一个字符用来接收得到的值
					   char a;
					   while(1)
					   {
						   a = fgetc(fp);
						   //如果a
						   if(a == EOF)
						   {
							   break;
						   }
						   fputc(a,fp2);
					   }
					   fflush(fp2);
				   }
				break;
			case 2:{
					   //定义一个搬运工搬运字符串
					   char b[20]="";
					   while(1)
					   {
							char *res = fgets(b,sizeof(b),fp);
							if(res == NULL)
							{
								printf("拷贝成功\n");
								break;
							}
							fputs(b,fp2);
					   }
					   fflush(fp2);
				   }
				break;
			case 3:{
					   //已知argv[1]中的文件都为%c
					   //定义一个接收函数
					   char ch;
					   while(1)
					   {
							int res = fscanf(fp,"%c",&ch);
							if(res == EOF)
							{
								break;
							}
							fprintf(fp2,"%c",ch);
					   }
					   fflush(fp2);
				   }
				break;
			case 4:{
					   //定义一个接收函数的容器
					   char d[20] = ""; 
					   fread(d,sizeof(char),sizeof(d),fp);
					   fwrite(d,sizeof(char),sizeof(d),fp2);
					   fflush(fp2);
				   }
				break;
			case 5:
				return -1;
				break;
			default:
				printf("输入有误,请从新输入选择");
				break;
		}
	}
	fclose(fp);
	fclose(fp2);
	return 0;
}

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

cpp 复制代码
#include<myhead.h>
typedef struct node
{
		char ADM[10];
		char PW[10];
}myadm_pw,*Pmyadm_pw;

void zhuche(FILE * fp)
{
	//注册账号和密码
	fprintf(stdout,"请输入你的账号:");
	//定义一个接收账号密码的用户
	myadm_pw ZH[100] = {0};
	//接收来自终端的账号
	fscanf(stdin,"%s",ZH->ADM);
	fprintf(stdout,"请输入你的密码:");
	//接收来自终端的密码
	fscanf(stdin,"%s",ZH->PW);
	//存入账号密码
	fwrite(ZH,sizeof(myadm_pw),1,fp);
	fflush(fp);
}

int denglu(FILE * fp2)
{
	fprintf(stdout,"请输入账号:");
	//定义一个容器接收账号
	char s1[10] = "";
	//接收来自终端的账号
	fscanf(stdin,"%s",s1);
	fprintf(stdout,"请输入你的密码:");
	//定义一个容器接收密码
	char s2[10] = "";
	fscanf(stdin,"%s",s2);
	//读取我们存入的账号密码
	//定义一个用户2接收
	myadm_pw DLZH[100]={0};
	while(1)
	{
		fread(DLZH,sizeof(myadm_pw),1,fp2);
		if(strcmp(s1,DLZH->ADM) == 0)
		{
			if(strcmp(s2,DLZH->PW) == 0)
			{
				return 1;
			}
			else
			{
				return -1;
			}
		}
		else
		{
			return -1;
		}
	}
}
int main(int argc, const char *argv[])
{

	while(1)
	{
		printf("\t\t------------------------登录系统---------------------------\t\n");
		printf("\t\t1、注册用户\n");
		printf("\t\t2、登录\n");
		printf("\t\t3、退出系统\n");
		printf("\t\t请输入你的选择\n");
		int n;
		scanf("%d",&n);
			switch(n)
			{
				case 1:{
							//打开账号文件
							FILE * fp = fopen("myadm_pw.txt","a");
							if(NULL == fp)
							{
								perror("fopen fp error");
							return -1;
							}					  
							printf("欢迎进入用户注册");
						    zhuche(fp);
							fclose(fp);
					   }
					break;
				case 2:{
						   //打开账号文件
							FILE *fp2 = fopen("myadm_pw.txt","r");
							if(NULL == fp2)
							{
								perror("fopen fp2 error");
								return -1;
							}
						    int res = denglu(fp2);
						    if(res == 1)
						    {
						 		printf("登录成功\n");
						    }
						    else
						    {
							    printf("登录失败,请重新输入\n");
						    } 
							fclose(fp2);
					   }
					break;
				case 3:
					return -1;
					break;
				default :
					printf("请输入正确的选择");
					break;
			}
	}

	return 0;
}
相关推荐
用户66053076196215 分钟前
UFlow:像素级工业零件异常检测 Normalized Flow 方法
算法
爱吃烤鸡翅的酸菜鱼23 分钟前
从零掌握贪心算法Java版:LeetCode 10题实战解析(上)
java·算法
workflower32 分钟前
软件工程的知识领域
开发语言·算法·软件工程·个人开发·结对编程
budingxiaomoli1 小时前
算法--双指针二
算法
做科研的周师兄1 小时前
【机器学习入门】8.2 主成分分析:一文吃透主成分分析(PCA)—— 从原理到核心逻辑
人工智能·算法·决策树·机器学习·流程图
LeeZhao@1 小时前
【具身智能】具身机器人VLA算法入门及实战(四):具身智能VLA技术行业进展
人工智能·算法·机器人
lingchen19061 小时前
矩阵的除法
人工智能·算法·矩阵
liu****1 小时前
笔试强训(六)
数据结构·c++·算法
前端小刘哥2 小时前
超越“接收端”:解析视频推拉流EasyDSS在RTMP推流生态中的核心价值与中流砥柱作用
算法
前端小刘哥2 小时前
新版视频直播点播平台EasyDSS用视频破局,获客转化双提升
算法