作业目标:
写一个usr.txt文档,文档中每一行的格式为:姓名 密码 例如:
zhangsan 123456
lisi abcdef
任务:
要求从终端输入账户,密码;
与文件中的账户密码比较
如果账户不存在,则输出用户不存在
如果账户存在,密码错误,则输出密码错误
如果账户密码均正确,输出登录成功;
代码如下:
#include <stdio.h>
#include <string.h>
int main(int argc, const char *argv[])
{
char get_name[20], get_passwd[20];
//从终端获取数据:账户 密码
printf("请输入账户和密码>>>");
scanf("%s %s", get_name, get_passwd);
//打开文件,以读写的方式打开
FILE* fp = fopen("./user.txt", "a+");
if(NULL == fp)
{
perror("fopen");
return -1;
}
char file_name[20];
char file_passwd[20];
int flag = 0;
while(1)
{
if(fscanf(fp, "%s %s", file_name, file_passwd) == EOF)
{
flag = 1;
break;
}
if(strcmp(get_name, file_name) == 0 && strcmp(get_passwd,file_passwd) == 0)
{
printf("登陆成功\n");
break;
}
else if(strcmp(get_name, file_name) == 0 && strcmp(get_passwd,file_passwd) != 0)
{
printf("密码错误\n");
break;
}
}
if(1 == flag) //如果flag为1,代表用户不存在;
{
//fprintf(fp, "%s %s\n", get_name, get_passwd);
printf("%s 用户不存在\n", get_name);
}
//关闭文件
fclose(fp);
return 0;
}
终端执行结果:
ubuntu@ubuntu:IO$ ./a.out
请输入账户和密码>>>zhangsan 123
密码错误
ubuntu@ubuntu:IO$ ./a.out
请输入账户和密码>>>lisi 123456
密码错误
ubuntu@ubuntu:IO$ ./a.out
请输入账户和密码>>>zhangsan 123456
登陆成功
ubuntu@ubuntu:IO$ ./a.out
请输入账户和密码>>>renba 12345
renba 用户不存在