第一章:标准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;
}
相关推荐
GeW15 小时前
新质生产力路线图Linux、数据库、国产化替代一次讲透
linux
zyl76516 小时前
FlashAttention 详解:从 GPU 硬件、普通 Attention 到分块计算与 Online Softmax
算法
aningx17 小时前
cachyos 从 GRUB 切换到 rEFInd
linux
第404号工位18 小时前
40块钱二手瘦客户端,如何跑满家庭物联网中枢?(拒绝Docker爆盘实录)
linux·架构·node.js
对象存储与RustFS18 小时前
网盘限速逼你开会员?用 RustFS 自己搭一个不限速的“私人网盘
服务器·后端·docker
骑着蜗牛撵大象32720 小时前
Linux 进程间通信之管道:从 pipe() 的内核语义到 FIFO 落地排错
android·java·linux·系统编程·fifo·管道·进程间通信
爱读书的小胖20 小时前
LeetCode 122:买卖股票的最佳时机 II(C)解题分析
算法
结局无敌20 小时前
React Native for OpenHarmony 实战:三方库 react-native-modal-dialog 的鸿蒙化适配指南
深度学习·算法·react native·react.js·harmonyos
..Dauntless..20 小时前
【Linux】一切皆文件和缓冲区
linux·运维·服务器
裕晟资质规划20 小时前
三类资质变更报告时限差在哪?军工 15 日、集成印制 10 日
大数据·服务器·网络