附加题(带注册功能的账号密码输入)
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
char member[20]="";
char passwd[20]="";
char k='y';
char end='y';
while(end!='n')
{
FILE *userfp=fopen("usr.txt","r+");
if(NULL==userfp)
{
perror("userfp fopen");
return -1;
}
if(k=='y')
{
printf("是否需要注册(y/n)");
scanf(" %c",&k);
}
if(k=='n')
{
printf("是否需要登录(y/n)");
scanf(" %c",&end);
if(end=='n')
break;
}
printf("请输入账户:");
scanf("%s",member);
printf("请输入密码:");
scanf("%s",passwd);
char fmem[20]="";
char fpwd[20]="";
while(1)
{
int flag=fscanf(userfp,"%s",fmem);
fscanf(userfp,"%s",fpwd);
if(EOF==flag)
{
if(k!='y')
{
printf("账户不存在\n");
break;
}
printf("注册成功\n");
fprintf(userfp,"%s %s\n",member,passwd);
break;
}
if((strcmp(fmem,member))==0)
{
if(0==(strcmp(passwd,fpwd)))
{
if(k!='y')
{
printf("登录成功\n");
end='n';
break;
}
}
if(k!='y')
printf("密码不正确\n");
else
printf("注册失败,账户重复\n");
break;
}
}
if(fclose(userfp)<0)
{
printf("文件关闭错误\n");
return -1;
}
}
return 0;
}
![](https://img-blog.csdnimg.cn/e8fadd76ae764c7e94999a2b1008d87a.png)
复制并计算文件的行数和字节数
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
FILE *fp1=fopen("1.txt","r");
if(NULL==fp1)
{
perror("fp1 fopen");
return -1;
}
FILE *fp2=fopen("2.txt","w");
if(NULL==fp2)
{
perror("fp2 fopen");
return -1;
}
char t=0;
int c1=0;
int c2=0;
while(1)
{
t=fgetc(fp1);
if(EOF==t)
break;
fputc(t,fp2);
c1++;
if(t=='\n')
{
c2++;
}
}
printf("该文件有%d个字节\n有%d行\n",c1,c2);
if(fclose(fp1)<0)
return -1;
if(fclose(fp2)<0)
return -1;
return 0;
}
![](https://img-blog.csdnimg.cn/b573f003a44b450491d0f2fd0813a507.png)
账号密码输入
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
char member[20]="";
char passwd[20]="";
FILE *userfp=fopen("usr.txt","r");
if(NULL==userfp)
{
perror("userfp fopen");
return -1;
}
printf("请输入账户:");
scanf("%s",member);
printf("请输入密码:");
scanf("%s",passwd);
while(1)
{
char fmem[20]="";
char fpwd[20]="";
int flag=fscanf(userfp,"%s",fmem);
fscanf(userfp,"%s",fpwd);
if(EOF==flag)
{
printf("账户不存在\n");
break;
}
if(!(strcmp(fmem,member)))
{
if(!(strcmp(passwd,fpwd)))
{
printf("登录成功\n");
break;
}
printf("密码不正确\n");
break;
}
}
if(fclose(userfp)<0)
{
printf("文件关闭错误\n");
return -1;
}
return 0;
}
![](https://img-blog.csdnimg.cn/ea47a5aefaa94941b58bfad2db0802bf.png)
![](https://img-blog.csdnimg.cn/b269274c35764abcbea4368329e41a5e.png)