设计一个网站的价格,上海培训机构有哪些,企业展厅设计公司收费情况,客户管理软件app1 实现登录功能
自定义一个usr.txt#xff0c;先手动输入其账户密码。 格式#xff1a;账户 密码 例#xff1a; zhangsan 12345 lisi abcde wangwu abc123 需求如下#xff1a; 1. 从终端获取账户密码#xff0c;与文件中的账户密码比较#xff1b; 2. 若终端输入的账户… 1 实现登录功能
自定义一个usr.txt先手动输入其账户密码。 格式账户 密码 例 zhangsan 12345 lisi abcde wangwu abc123 需求如下 1. 从终端获取账户密码与文件中的账户密码比较 2. 若终端输入的账户不存在则输出账户不存在 3. 若终端输入的账户存在但是密码不正确则输出密码错误 4. 若账户密码均正确则输出登录成功。 方法一
#include stdio.h
#include string.h
#include stdlib.h
#include unistd.h
int main(int argc, const char *argv[])
{char get_usrname[20];char get_usrpass[20];printf(请输入账号);scanf(%s,get_usrname);printf(请输入密码);scanf(%s,get_usrpass);FILE* fpfopen(./usr.txt,r);if(NULL fopen){perror(fopen);return -1;}char file_name[20];char file_pass[20];int flag0;while(1){if(fscanf(fp,%s %s,file_name,file_pass)EOF)//从终端读取账号密码{flag1;break;}if(strcmp(file_name,get_usrname)0 strcmp(file_pass,get_usrpass)!0){printf(密码错误\n);break;}if(strcmp(file_name,get_usrname)0 strcmp(file_pass,get_usrpass)0){printf(登录成功\n);break;}}if(flag1){printf(该用户不存在\n);}fclose(fp);
return 0;
} 方法二
#include stdio.h
#include unistd.h
#include string.hint main(int argc, const char *argv[])
{char get_name[20] , get_passwd[20] ;char file_name[20] , file_passwd[20] ;//从终端获取账户密码printf(请输入账户和密码 );scanf(%s %s, get_name, get_passwd);//以读的方式打开文件FILE* fp fopen(./usr.txt, r);if(NULL fp){perror(fopen);return -1;}//循环读取文件的一行账户 密码while(1){//将字符串清空bzero(file_name, sizeof(file_name));bzero(file_passwd, sizeof(file_passwd));if(fscanf(fp, %s %s, file_name, file_passwd) EOF){printf(%s 用户不存在\n, get_name);break;}// printf(%s %s\n, file_name, file_passwd);//与终端获取到的账户密码比较if(strcmp(file_name, get_name) ! 0) //若账户名不相同则去获取下一个账户密码continue;if(strcmp(file_passwd, get_passwd) ! 0){printf(%s 密码错误\n, get_name);}else{printf(%s 用户登录成功\n, get_name);}break; //若账户相同则不需要继续往后比较其他用户了}//关闭文件fclose(fp);return 0;
}2 实现注册功能
注册的账户密码存储在上一题的文件中。 需求不能重复注册。 #include stdio.h
#include string.h
#include stdlib.h
#include unistd.h
int log_on();
int regist();
int main(int argc, const char *argv[])
{/*一、实现登录功能。自定义一个usr.txt手动输入账户密码格式如下账户 密码例如 zhangsan 12345lisi abcdewangwu abc123需求如下1.从终端获取账户密码与文件中的账户密码比较2.若终端输入的账户不存在则输出账户不存在3.若终端输入的账户存在但是密码不正确则输出密码错误4.若账户密码均正确则输出登录成功二、附加题实现注册功能注册的账户密码存储在上一题的文件中。需求不能重复注册。*/int choose;printf(请选择是注册用户1还是登录用户2);scanf(%d,choose);if(choose!1choose!2){printf(选择失败\n);return 0;}//注册else if(choose1){regist();}//登录else{log_on();}return 0;
}
int log_on()
{char get_usrname[20];char get_usrpass[20];printf(请输入账号);scanf(%s,get_usrname);printf(请输入密码);scanf(%s,get_usrpass);FILE* fpfopen(./usr.txt,r);if(NULL fopen){perror(fopen);return -1;}char file_name[20];char file_pass[20];int flag0;while(1){if(fscanf(fp,%s %s,file_name,file_pass)EOF)//从终端读取账号密码{flag1;break;}if(strcmp(file_name,get_usrname)0 strcmp(file_pass,get_usrpass)!0){printf(密码错误\n);int b0;printf(请问是否要再次登录(0/1):);scanf(%d,b);if(b1){log_on();}break;}if(strcmp(file_name,get_usrname)0 strcmp(file_pass,get_usrpass)0){printf(登录成功\n);break;}}if(flag1){printf(该用户不存在\n);int b0;printf(请选择是否要注册0/1):);scanf(%d,b);if(b1){regist();}}fclose(fp);return 0;
}int regist()
{char get_usrname[20];char get_usrpass[20];printf(请输入注册账户);scanf(%s,get_usrname);printf(请输入注册密码);scanf(%s,get_usrpass);FILE* fpfopen(./usr.txt,r);char file_name[20];char file_pass[20];int flag0;while(1){if(fscanf(fp,%s %s,file_name,file_pass)EOF){flag1;break;}if(strcmp(get_usrname,file_name)0){printf(用户已存在\n);int b0;printf(请问是否直接选择登录(0/1));scanf(%d,b);if(b1){log_on();}break;}}if(flag1){fclose(fp);fpfopen(./usr.txt,a);fprintf(fp,%s %s,get_usrname,get_usrpass);fputc(10,fp);printf(注册成功\n);}fclose(fp);}