1> 使用fgets统计给定文件的行数
2> 使用fputs和fgets完成两个文件的拷贝
3> 完成注册登录功能
做个小菜单,功能1是注册功能,输入注册账户和注册密码,将账户和密码写入文件中
功能2是登录功能,提示并输入登录账户和登录密码,并用其遍历文件中的每一组账户和密码,如果匹配成功,则登录成功,如果全部不匹配则提示登录失败
#include<myhead.h>
//定义注册函数
int do_register()
{
//定义注册账号和密码
char register_name[20] ="";
char register_pwd[20] = "";
printf("请输入注册账号:");
fgets(register_name, sizeof(register_name), stdin);
register_name[strlen(register_name)-1] = '\0'; //将换行换成'\0'
printf("请输入注册密码:");
fgets(register_pwd, sizeof(register_pwd), stdin);
register_pwd[strlen(register_pwd)-1] = '\0'; //将换行换成'\0'
//以追加的形式打开文件
FILE *fp = NULL;
if((fp = fopen("./usr.txt", "a")) == NULL)
{
perror("fopen error");
return -1;
}
//将当前的账号和密码写入文件
fprintf(fp, "%s %s\n", register_name, register_pwd);
//关闭文件
fclose(fp);
printf("注册成功\n");
return 0;
}
//定义登录函数
int do_login()
{
char login_name[20] = "";
char login_pwd[20] = "";
printf("请输入登录账号:");
fgets(login_name, sizeof(login_name), stdin);
login_name[strlen(login_name)-1] = '\0'; //将换行换成'\0'
printf("请输入登录密码:");
fgets(login_pwd, sizeof(login_pwd), stdin);
login_pwd[strlen(login_pwd)-1] = '\0'; //将换行换成'\0'
//打开文件,遍历所有的账号和密码
FILE *fp = NULL;
if((fp = fopen("./usr.txt", "r")) == NULL)
{
perror("fopen error");
return -1;
}
//循环读取账号和密码
char name[20] = "";
char pwd[20] = "";
while(1)
{
int res = fscanf(fp, "%s %s", name, pwd); //从文件中读取一组数据
if(res == EOF)
{
//关闭文件
fclose(fp);
return -1;
}
//判断账号和密码是否匹配
if(strcmp(name,login_name)==0 && strcmp(pwd, login_pwd)==0)
{
//关闭文件
fclose(fp);
return 0;
}
}
}
/************************主程序**********************/
int main(int argc, const char *argv[])
{
int menu = 0;
while(1)
{
system("clear"); //执行终端指令
printf("\t\t======XXX登录界面============\n");
printf("\t\t======1、注册============\n");
printf("\t\t======2、登录============\n");
printf("\t\t======0、退出============\n");
printf("请输入选项:");
scanf("%d", &menu);
getchar();
//对菜单多分支选择
switch(menu)
{
case 1:
{
//注册功能
do_register();
}
break;
case 2:
{
//登录功能
int res = do_login();
if(res == 0)
{
printf("登录成功\n");
}else
{
printf("登录失败\n");
}
}
break;
case 0:goto END;
default:printf("您输入的功能有误,请重新输入\n");
}
//提示输入任意键按回车结束
printf("请输入任意键按回车结束!!!\n");
while(getchar() != '\n');
}
END:
return 0;
}