项目思路梳理:
1、提示用户输入用户名和密码
2、打开后台记录用户名和密码的数据文件
3、读取数据文件每一行的用户名和密码
4、将读取到的用户名和密码与输入的用户名和密码进行比较
5、输入正确则直接进入管理界面,否则重新读取数据文件的下一行
6、如果已经读取到数据文件末尾说明输入的用户名和密码有误,需要提示用户重新输入
#include <stdio.h>
#include <string.h>
int main(void)
{
FILE *file; //记录文件的指针
char name[16]; //保存输入的用户名
char pwd[32]; //保存输入的密码
char name_tmp[16]; //保存从数据文件读取到的用户名
char pwd_tmp[32]; //保存从数据文件读取到的密码
char line[128]; //保存从数据文件读取到的当前行字符
char *line_tmp; //保存读取到的当前行地址
//以读取的方式打开后台记录用户名和密码的文件hello.txt
file=fopen("hello.txt","r");
//文件如果打开失败会返回NULL(就是0)
if(!file)
{
printf("文件打开失败!");
return 1;
}
//判断输入的用户名和密码是否正确
while(1)
{
//输入用户名和密码
printf("请输入用户名:");
scanf("%s",name);
printf("请输入密码:");
scanf("%s",pwd);
//从数据文件hello.txt读取每一行并与输入的用户名和密码进行比较
while(1)
{
//将读取到的当前行字符存到line字符数组中,并将首地址记录到指针line_tmp中
//fgets()读取失败返回NULL,读取成功返回str
line_tmp=fgets(line,sizeof(line),file);
//如果返回NULL说明已经读取到hello.txt文件的末尾,退出循环
if(!line_tmp)
{
break;
}
//读取当前行的用户名和密码并存到临时变量name_tmp和pwd_tmp中
sscanf(line,"%s%s",name_tmp,pwd_tmp);
//将读取的用户名和密码与输入的用户名和密码进行比较,成功就直接退出循环
if((!strcmp(name,name_tmp))&&(!strcmp(pwd,pwd_tmp)))
{
break;
}
}
//如果输入的用户名和密码不正确就不会匹配到对应的数据,即指针line_tmp为NULL(已经读取到文件末尾)
//输入正确的话直接退出循环
if(!line_tmp)
{
printf("输入的用户名或密码错误,请重新输入!\n");
system("pause"); //暂停界面
system("cls"); //清屏操作
fseek(file,0,SEEK_SET); //将文件指针移到开头
}
else
{
break;
}
}
system("cls");
//后台管理界面打印(简略,后续功能待开发...)
printf("---交换机后台管理---\n");
printf("1. 创建账号\n");
printf("2. IP管理\n");
printf("3. 退出\n");
printf("请选择\n");
//记得关闭文件
fclose(file);
return 0;
}