2023/12/04 work

1. 在文件中打印信息如下

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <time.h>

int main(int argc, const char *argv[])
{
	//获取当前时间信息写入到文件中
	
	time_t sysTime,oldTime;
	struct tm* sys;

	FILE *fp = NULL;

	if((fp = fopen("./work1.txt","a+")) == NULL){
		perror("work1 open error");
		return -1;
	}

	//获取文件中条数
	char buf[10];
	int count =0;
	while(fgets(buf,sizeof(buf),fp)!= NULL){
		//printf("%s\n",buf);
		for(int i=0;i<strlen(buf);i++){
			if(buf[i] == '\r'){
				count++;
			}
		}
	}

	//printf("%d\n",count);

	while(1){
	
		sysTime = time(NULL);
		if(sysTime != oldTime){
			oldTime = sysTime;
			//&sysTime 这里需要传地址
			sys = localtime(&sysTime);
			char buf1[100];	
			snprintf(buf1,sizeof(buf1),"%d: %4d-%02d-%02d %02d:%02d:%02d\r",++count,sys->tm_year+1900,sys->tm_mon+1,
					sys->tm_mday,sys->tm_hour,sys->tm_min,sys->tm_sec);
			fputs(buf1,stdout);
			//把数据写到文件中
			fputs(buf1,fp);
			fflush(fp);
			fflush(stdout);
		}
	}

	//关闭文件
	fclose(fp);

	return 0;
}

2.将注册登录功能,重新做一遍

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int regist();
int login();


int main(int argc, const char *argv[])
{
	//实现注册功能
	
	int enu = -1;

	while(1){
		//清除终端指令
		system("clear");
		printf("\t\t=======1. 注册 ======\n");
		printf("\t\t=======2. 登录 ======\n");
		printf("\t\t=======0. 退出 ======\n");
		printf("请输入对应的选项: ");
		scanf("%d",&enu);
		//吸收\n
		getchar();

		switch(enu){
			case 1:{
						regist();
				   }
				   break;
			case 2:{
				   		login();
				   }
				   break;
			case 0:return;
			default:printf("输入错误!!");
		}

		printf("请输入任意键退出!");
		while(getchar()!='\n');

	}

	return 0;
}

int regist(){

	char regist_name[30];
	char regist_pwd[30];

	//从终端获取账号及密码
	printf("请输入注册账号: ");
	fgets(regist_name,sizeof(regist_name),stdin);
	regist_name[strlen(regist_name)-1]= 0;

	printf("请输入注册密码: ");
	fgets(regist_pwd,sizeof(regist_pwd),stdin);
	regist_pwd[strlen(regist_pwd)-1]= 0;

	FILE *fp = NULL;
	if((fp = fopen("./work2.txt","a+")) == NULL){
		perror("regist open error");
		return -1;
	}

	//把数据写到文件中
	fprintf(fp,"%s %s\n",regist_name,regist_pwd);

	printf("注册成功\n");

	//关闭文件
	fclose(fp);

} 

int login(){
	char login_name[30];
	char login_pwd[30];
	char user_name[30];
	char user_pwd[30];

	//从终端获取账号及密码
	printf("请输入登录账号: ");
	fgets(login_name,sizeof(login_name),stdin);
	login_name[strlen(login_name)-1]= 0;

	printf("请输入登录密码: ");
	fgets(login_pwd,sizeof(login_pwd),stdin);
	login_pwd[strlen(login_pwd)-1]= 0;

	FILE *fp = NULL;
	if((fp = fopen("./work2.txt","a+")) == NULL){
		perror("regist open error");
		return -1;
	}
	
	int flag =0;
	//文件是否读到最后
	while(!feof(fp)){
	
		fscanf(fp,"%s %s",user_name,user_pwd);
		//printf("222 %s",user_name);
		//判断用户名 密码是否相等
		if(strcmp(login_name,user_name) == 0 && strcmp(login_pwd,user_pwd) == 0){
			flag++;
			printf("输入的账号密码正确\n");
			break;
		}
	}
	if(flag == 0){
		printf("输入的账号密码不正确!\n");
	}

	return 0;
}

3. 使用fread\fwrite完成两个文件的拷贝

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

struct Stu{
	char name[30];
	double score;
};

int main(int argc, const char *argv[])
{
	//从控制台输入两个文件,实现文件拷贝
	
	if(argc != 3){
		printf("please enter filename\n");
		return -1;
	}
	//源文件
	FILE *descFile =NULL;
	//目标文件
	FILE *targeFile =NULL;
	
	if(( descFile = fopen(argv[1],"r")) == NULL){
		perror("descFile open error");
		return -1;
	}

	if((targeFile = fopen(argv[2],"a+"))==NULL){
		perror("targeFile open error");
		return -1;
	}

	while(!feof(descFile)){
		//读
		struct Stu rea;
		fread(&rea,sizeof(rea),1,descFile);

		//写
		fwrite(&rea,sizeof(rea),1,targeFile);
	}

	//关闭文件
	fclose(descFile);
	fclose(targeFile);

	return 0;
}

4. 思维导图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值