第一章:标准IO

作业:

1、使用这fscanf和fprintf两个函数实现文件的拷贝。

cpp 复制代码
/*******************************************************/
//=> File Name: spcopy.c
//=> Author: Water
//=> Mail: 1249496568@qq.com 
//=> Created Time: 2024年12月09日 星期一 19时26分15秒
/*******************************************************/

#include<myhead.h>
int main(int argc, const char *argv[])
{
	int res = 0;
	FILE * fp1 = fopen("./spcopy.c","r");
	FILE * fp2 = fopen("./test.txt","w");
	char key;
	while(1)
	{
		if(res == EOF)
		{
			break;
		}
		res = fscanf(fp1,"%c",&key);
		fprintf(fp2,"%c",key);
	}
	fclose(fp1);
	fclose(fp2);
	fp2 = fopen("./test.txt","r");
	while(1)
	{
		res = fscanf(fp2,"%c",&key);
		if(res == EOF)
		{
			break;
		}
		printf("%c",key);
	}
	fclose(fp2);
	return 0;
}


2、fwrite和fread实现文件拷贝。

cpp 复制代码
/*******************************************************/
//=> File Name: rwcopy.c
//=> Author: Water
//=> Mail: 1249496568@qq.com 
//=> Created Time: 2024年12月09日 星期一 16时33分24秒
/*******************************************************/

#include<myhead.h>
int main(int argc, const char *argv[])
{
	FILE * fp1 = fopen("./rwcopy.c","r");
	FILE * fp2 = fopen("./test.txt","w");
	char buff[1024] = "";
	while(1)
	{
		int res = fread(buff,1,sizeof(buff),fp1);
		if(res == 0)
		{
			break;
		}
		fwrite(buff,sizeof(buff),1,fp2);
	}
	fclose(fp1);
	fclose(fp2);
	fp2 = fopen("./test.txt","r");
	while(1)
	{
		int res = fread(buff,1,sizeof(buff),fp2);
		if(res == 0)
		{
			break;
		}
		printf("%s",buff);
	}
	fclose(fp2);
	return 0;
}


3、登录注册实现一遍。

cpp 复制代码
/*******************************************************/
//=> File Name: zhucedenglupro.h
//=> Author: Water
//=> Mail: 1249496568@qq.com 
//=> Created Time: 2024年12月09日 星期一 13时45分37秒
/*******************************************************/

#ifndef ZHUCEDENGLUPRO_H
#define ZHUCEDENGLUPRO_H
#include<myhead.h>

//共用函数声明
void dengdai();			//等待键入回车再返回到主菜单
void error1();			//误输入提示模块
//注册登录模块相关函数声明
int getch();  			//按键读取函数
void mima();			//密码隐藏函数
void zhucedenglu(); 	//注册登录框架
void menu1(); 			//注册登录循环显示选择模块
void zhuce(); 			//注册模块
void denglu(); 			//登录模块
cpp 复制代码
/*******************************************************/
//=> File Name: zhucedenglupro.c
//=> Author: Water
//=> Mail: 1249496568@qq.com 
//=> Created Time: 2024年12月09日 星期一 13时45分37秒
/*******************************************************/

#include"zhucedenglupro.h"
//注册登录系统
void zhucedenglu()							
{
	char regest_usr[20] = ""; 						//注册名称
	char regest_pwd[20] = ""; 						//注册密码
	while(1)
	{	
		int select1 = 0; 							//菜单1的选项
		menu1(&select1); 							//注册登录循环显示选择模块
		switch(select1) 							//多分支选择
		{
		case 1: 								//注册账号
			{
				zhuce(&regest_usr,&regest_pwd); 	//调用注册模块
			}
			break;
		case 2: 		 						//登录账号
			{
				denglu(&regest_usr,&regest_pwd); 	//调用登录模块
				return;
			}
			break;
		case 0:
			exit(0);
		default:
			error1();							//误输入提示模块
			dengdai(); 							//等待键入回车再返回到主菜单
		}
	}
}
//注册登录循环显示选择模块
void menu1(int * select1) 								
{
	system("clear"); 								//清屏
	printf("=====注册账号=====\n");
	printf("===1、注册账号====\n");
	printf("===2、登录账号====\n");
	printf("===0、退出系统====\n");
	printf("请键入选项(0~2):");
	scanf("%d",select1);
}
//按键读取函数
int getch() 				
{
    int c = 0;
    struct termios org_opts, new_opts;
    int res = 0;
    res = tcgetattr(STDIN_FILENO, &org_opts);
    assert(res == 0);
 
    new_opts = org_opts;
 
    new_opts.c_lflag &= ~(ICANON | ECHO);
    tcsetattr(STDIN_FILENO, TCSANOW, &new_opts);
 
    c = getchar();
 
    res = tcsetattr(STDIN_FILENO, TCSANOW, &org_opts);
    assert(res == 0);
    return c;
}
//密码隐藏函数
void mima(char * pass)
{
	int i = 0;
	while((getchar()) != '\n'); 					//清空缓冲区
	while(1)
	{
		char c=getch();
		if(c=='\n'){break;}
		printf("*");
		pass[i++]=c;
	}
}
//注册模块
void zhuce(char * regest_usr,char * regest_pwd) 					
{
	printf("请输入账号:");
	scanf("%s",regest_usr);
	printf("请输入密码:");
	mima(regest_pwd);
	//追加写的方式写入文件
	FILE * fp = fopen("./.zhangmiFile","a+"); 		//打开隐藏文件
	if(NULL == fp)
	{
		perror("fopen");
		return;
	}
	fprintf(fp,"%s %s\n",regest_usr,regest_pwd);
	fclose(fp);
	printf("\n注册成功,请键入回车返回主菜单\n");
	getchar(); 									//等待键入回车再返回到主菜单
}
//登录模块
void denglu(char * regest_usr,char * regest_pwd) 					
{
	while(1)
	{
		char usrName[20] = ""; 						//登录账号
		char pwd[20] = "";							//登录密码
		printf("请输入账号:");
		scanf("%s",usrName);
		printf("请输入密码:");
		mima(pwd);
		//循环读取文件内容与账号密码匹配
		FILE * fp = fopen("./.zhangmiFile","r");
		if(NULL == fp)
		{
			perror("fopen");
			return;
		}
		while(1)
		{
			int res = fscanf(fp,"%s %s",regest_usr,regest_pwd);
			if(res == EOF)
			{
				break;
			}
			//判断登录是否成功
			if(strcmp(usrName,regest_usr) == 0 && strcmp(pwd,regest_pwd) == 0)
			{
				printf("\n登录成功,请键入回车进入下一级界面\n");
				getchar(); 						//等待键入回车再返回到主菜单
				printf("下一级界面\n"); 			//进入下一级界面
				return;
			}
		}
		printf("\n登录失败,请重新登录\n");
	}
}
//等待键入回车再返回到主菜单
void dengdai()  							
{
		while((getchar()) != '\n'); 				//清空缓冲区
		getchar(); 								//等待键入回车再返回到主菜单
}
void error1()										//误输入提示模块
{
	printf("输入有误,请键入回车返回主菜单\n");
}
cpp 复制代码
/*******************************************************/
//=> File Name: main.c
//=> Author: Water
//=> Mail: 1249496568@qq.com 
//=> Created Time: 2024年12月09日 星期一 13时45分37秒
/*******************************************************/

#include"zhucedenglupro.h"
int main(int argc, const char *argv[])
{
	zhucedenglu(); 		//注册登录系统
	return 0;
}
相关推荐
YJlio几秒前
[鸿蒙2025领航者闯关] 鸿蒙 6 实战:给“支付/账单页”加上 AI 防窥 + 超级隐私模式兜底 + 方舟引擎性能优化
服务器·笔记·学习
一个平凡而乐于分享的小比特1 分钟前
Linux 内核设计中的核心思想与架构原则
linux·架构·linux设计思想
wanhengidc1 分钟前
云手机 实体手机的云端延伸
运维·服务器·科技·智能手机·云计算
副露のmagic2 分钟前
更弱智的算法学习 day12
数据结构·学习·算法
BullSmall3 分钟前
Shell脚本波浪号避坑指南
linux·bash
luoyayun3615 分钟前
Linux下安装使用Claude遇到的问题及解决方案
linux·claude
翼龙云_cloud6 分钟前
阿里云渠道商:如何三步提升阿里云轻量服务器单机性能?
运维·服务器·阿里云·云计算
fie88897 分钟前
C++实现D星 Lite算法
c++·算法·哈希算法
我不会写代码njdjnssj9 分钟前
图论问题-最短路径
数据结构·算法·图论
失眠的树亚13 分钟前
vscode连接阿里云ECS服务器
服务器·vscode·阿里云