自学内容网 自学内容网

10.16标准IO作业

1、完成标准io的单字符、字符串、格式化、模块化实现两个文件的拷贝;

#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、实现注册和登录功能,将注册账号和密码存储到文件中,登录时遍历文件如果存在就登录成功否则登录失败

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


原文地址:https://blog.csdn.net/zz40_/article/details/142989997

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!