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;
}