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;
}
相关推荐
Dizzy.51718 分钟前
数据结构(查找)
数据结构·学习·算法
分别努力读书3 小时前
acm培训 part 7
算法·图论
武乐乐~3 小时前
欢乐力扣:赎金信
算法·leetcode·职场和发展
'Debug3 小时前
算法从0到100之【专题一】- 双指针第一练(数组划分、数组分块)
算法
Fansv5874 小时前
深度学习-2.机械学习基础
人工智能·经验分享·python·深度学习·算法·机器学习
yatingliu20195 小时前
代码随想录算法训练营第六天| 242.有效的字母异位词 、349. 两个数组的交集、202. 快乐数 、1. 两数之和
c++·算法
uhakadotcom5 小时前
Google DeepMind最近发布了SigLIP 2
人工智能·算法·架构
三年呀6 小时前
计算机视觉之图像处理-----SIFT、SURF、FAST、ORB 特征提取算法深度解析
图像处理·python·深度学习·算法·目标检测·机器学习·计算机视觉
淡黄的Cherry6 小时前
istio实现灰度发布,A/B发布, Kiali网格可视化(二)
java·算法·istio
Onlooker1296 小时前
LC-单词搜索、分割回文串、N皇后、搜索插入位置、搜索二维矩阵
算法·leetcode