第一章:标准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;
}
相关推荐
码字哥7 分钟前
EasyExcel设置表头上面的那种大标题(前端传递来的大标题)
java·服务器·前端
m0_748257181 小时前
海康威视摄像头RTSP使用nginx推流到服务器直播教程
运维·服务器·nginx
Pou光明2 小时前
1_linux系统网络性能如何优化——几种开源网络协议栈比较
linux·运维·网络·网络协议·开源
工业甲酰苯胺2 小时前
C语言之输入输出
c语言·c++·算法
努力d小白3 小时前
leetcode98.验证二叉搜索树
算法
YueTann3 小时前
Leetcode SQL 刷题与答案-基础篇
sql·算法·leetcode
TianyaOAO3 小时前
inmp+discuz论坛
linux·运维·服务器
星光璀璨山河无恙3 小时前
【Linux】grep命令
大数据·linux
寒月6583 小时前
黑盒白盒测试
运维·服务器
I love this bad girl3 小时前
防火墙旁挂部署+故障切换
服务器·网络·数据库