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;
}
相关推荐
Dola_Pan2 分钟前
C语言:数组转换指针的时机
c语言·开发语言·算法
繁依Fanyi15 分钟前
简易安卓句分器实现
java·服务器·开发语言·算法·eclipse
烦躁的大鼻嘎31 分钟前
模拟算法实例讲解:从理论到实践的编程之旅
数据结构·c++·算法·leetcode
C++忠实粉丝1 小时前
计算机网络socket编程(4)_TCP socket API 详解
网络·数据结构·c++·网络协议·tcp/ip·计算机网络·算法
用户37791362947551 小时前
【循环神经网络】只会Python,也能让AI写出周杰伦风格的歌词
人工智能·算法
福大大架构师每日一题1 小时前
文心一言 VS 讯飞星火 VS chatgpt (396)-- 算法导论25.2 1题
算法·文心一言
EterNity_TiMe_2 小时前
【论文复现】(CLIP)文本也能和图像配对
python·学习·算法·性能优化·数据分析·clip
机器学习之心2 小时前
一区北方苍鹰算法优化+创新改进Transformer!NGO-Transformer-LSTM多变量回归预测
算法·lstm·transformer·北方苍鹰算法优化·多变量回归预测·ngo-transformer
yyt_cdeyyds2 小时前
FIFO和LRU算法实现操作系统中主存管理
算法
alphaTao2 小时前
LeetCode 每日一题 2024/11/18-2024/11/24
算法·leetcode