touch有一个usr.txt的文件,其中存储着用户的账户和密码,格式如下:
zhangsan aaaa
lisi bbbbb
空格前面是账户,空格后面是密码,一行一个账户、密码
要求如下:
从终端获取一个账户名和密码
判断是否能够登录成功
若账户不存在:则提示账户不存在
若账户存在,密码不匹配:则提示密码错误
账户密码均存在:则显示登录成功。
添加一个注册功能。不能重复注册
具体代码如下:
#include<stdio.h>
#include <string.h>
int main(int argc, const char *argv[])
{
FILE* fp =fopen("usr.txt","r+");
if(NULL == fp)
{
perror("fopen");
return -1;
}
char account[30],password[30];
char file_account[30],file_password[30];
char new_account[30],new_password[30];
//终端获取一个账户和密码
printf("请输入账户和密码:");
scanf("%s %s",account,password);
//将名字和密码与文件中存储的账户密码进行比较
while(1)
{
if(fscanf(fp,"%s %s",file_account,file_password) == EOF)
{
printf("%s 用户不存在\n",account);
printf("注册账户:\n");
scanf("%s %s",new_account,new_password);
fseek(fp,0,SEEK_SET);
while(1)
{
fprintf(fp,"%s %s",new_account,new_password);
if(strcmp(file_account,new_account)==0)
printf("注册失败,该用户已存在\n");
}
break;
}
//printf("f:%s %s\n",file_account,file_password);
//比较账户若相同则比较密码
//account相同直接跳出循环
if(strcmp(account,file_account)==0)
{
if(strcmp(password,file_password)==0)
printf("用户登录成功\n");
else
printf("用户登录失败\n");
break;
}
//如果账户不相同则读取下个账户密码
}
/* if(fclose(fp) < 0)
{
perror("fclose");
return -1;
}
*/
fclose(fp);
return 0;
}