C 关于一个多账号登陆的问题
题目的要求是编写算法实现密码设置与校验:
1.从屏幕上输入多个账号密码,账号密码的长度不超过20个字符,输入的密码在屏幕上以”*”显示,并保存在文本文件中。
2.实现登陆功能,如果登陆输入的账号密码与设置的相同,则显示欢迎信息,如果密码不正确,则提示错误,并重试,如果三次仍失败则退出程序。
也就是类似于QQ多账户的同时登陆问题。现在楼主写了一些代码如下,
#include <stdio.h>
#include <string.h>
#include <conio.h>
int main()
{
FILE *fp;
char ch,person[20],password1[20];
char name[20];
char password[20];
int n,p,i=1;
int flag=0; //flag用于跳出最后循环结构
printf("请输入账号密码组数:\n"); //输入密码个数
scanf("%d",&n);
printf("账号:\n");
scanf("%s",&name);
if((fp=fopen("test.txt","w"))==NULL)
{
printf("没有打开文件,程序退出\n");
}
printf("输入密码:");
while(i++<=n)
{
while(ch=getch())
{
if(ch!=13)
{
printf("*");
fputc(ch,fp);
}
else
{
printf("\n");
fputc('\n',fp);
break;//检测密码是否为空、回车等无意义
}
}
}
fclose(fp);
fp=fopen("test.txt","r");
getchar();
for(p=1;p<=3;p++)
{
if(flag==0)
{
printf("You have only %d chances:\n",4-p); //提示密码出错次数
}
gets(password1);
rewind(fp);
for(i=0;i<n;i++)//此处for循环用于检测多个密码和文件中的密码是否一致
{
fscanf(fp,"%s",name);
if(strcmp(name,person)==0)
{
printf("用户名正确请继续输入密码!");
}
else
printf("用户名输入错误\n");
fscanf(fp,"%s",password);
if(strcmp(password,password1)==0)
{
printf("Welcome to enter the system\n"); //输入正确,欢迎进入系统
flag=1;
}
}
}
fclose(fp);
if(flag==0)
{
printf("You have no right to enter the system!\n");//三次机会用完,程序退出无法进入系统!
}
}
现在问题是这样。楼主需要一个功能比如说我已经输入一个账号和密码然后需要再输入账号密码时候先输入一个数字或者其他就能重新转到输入账号的功能上去。