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;
}
相关推荐
XH华3 小时前
初识C语言之二维数组(下)
c语言·算法
南宫生3 小时前
力扣-图论-17【算法学习day.67】
java·学习·算法·leetcode·图论
不想当程序猿_4 小时前
【蓝桥杯每日一题】求和——前缀和
算法·前缀和·蓝桥杯
落魄君子4 小时前
GA-BP分类-遗传算法(Genetic Algorithm)和反向传播算法(Backpropagation)
算法·分类·数据挖掘
菜鸡中的奋斗鸡→挣扎鸡4 小时前
滑动窗口 + 算法复习
数据结构·算法
Lenyiin4 小时前
第146场双周赛:统计符合条件长度为3的子数组数目、统计异或值为给定值的路径数目、判断网格图能否被切割成块、唯一中间众数子序列 Ⅰ
c++·算法·leetcode·周赛·lenyiin
郭wes代码4 小时前
Cmd命令大全(万字详细版)
python·算法·小程序
scan7244 小时前
LILAC采样算法
人工智能·算法·机器学习
菌菌的快乐生活5 小时前
理解支持向量机
算法·机器学习·支持向量机
大山同学5 小时前
第三章线性判别函数(二)
线性代数·算法·机器学习