#define UC (1U<<1) // upper case
#define LC (1U<<2) // lower case
#define NUM (1U<<3) // 0-9
#define ALL (UC|LC|NUM)
int check(const char pass1[], const char pass2[])
{
const char *p = &pass1[0]
unsigned int flag = 0
if (strlen(pass1) <6 || strlen(pass1) >8)
{
printf("password length is 6 to 8.\n")
return 1
}
if (strcmp(pass1, pass2))
{
printf("the tow passwords are diffrence.\n")
return 2
}
while (*p)
{
if (*p >= 'a' &&*p <= 'z') flag |= LC
else if (*p >= 'A' &&*p <= 'Z') flag |= UC
else if (*p >= '0' &&*p <= '9') flag |= NUM
else
{
printf("in valid charactor: %c.\n", *p)
return 3
}
++p
}
if (flag == ALL) return 0
if ((flag &UC) == 0)
{
printf("lack of uppercase.\n")
}
if ((flag &LC) == 0)
{
printf("lack of lowercase.\n")
}
if ((flag &NUM) == 0)
{
printf("lack of number.\n")
}
return -1
}
int main(int argc, char *argv[])
{
char pass1[100]
char pass2[100]
do {
printf("input password:")
scanf("%s", pass1)
printf("repeat password:")
scanf("%s", pass2)
} while (check(pass1, pass2) != 0)
return 0
}
我有一个C++的运行程序需要输入密码的程序,输入正确可以修改密码,密码保存在文件中是加密的。至于注册之类的可以再加上一个文件保存用户名和密码,再在程序里加上功能选择的代码,注册时扫描一遍文件中的名字,如果存在就提示,否则就OK。。。。#include<iostream>
#include<fstream>// 文件输入输出流
#define PASSLEN 16
#define PASS 3123 //这个东西用来加密密码s
#define infile "XMAN.txt" //保存密码的文件s
using namespace std
bool exist() //判断密码文件是否存在 不存在表示未设置过密码
{
ifstream fin(infile)//文件输入输出流定义 ifstream +流的名字 用于从文件中读入数据
char temp[PASSLEN]
temp[0]=0
fin>>temp
if(temp[0]==0) return false
else
return true
}
void changepass()
{
char pass[PASSLEN]
ofstream fout(infile)
cout<<"Please Set New Password:"
cin>>pass
for(int i=0i<PASSLENi++)
if(pass[i]!=0)
fout<<pass[i]+PASS<<endl
cout<<"Pass Set Successfully !"<<endl
}
int main()
{
char input[PASSLEN]
bool isok=true//判断密码是否吻合
memset(input,0,sizeof(input))
if(!exist()) //密码文件不存在就重新设置密码
{changepass()return 0}
ifstream fin(infile)
cout<<"Please Input The Password:"
cin>>input//从键盘和文件分别读入密码
int len=strlen(input)
//cout<<lensystem("pause")
for(int i=0i<leni++) //这个循环用来判断密码是否吻合
{
int pass
fin>>pass
pass-=PASS
if(input[i]!=char(pass)) //一旦不相同就将 isok 设置为 false 同时推出循环
{
cout<<i<<" "<<passsystem("pause")
isok=false
break
}
}
if(isok) //如果密码吻合
{
cout<<"PASS CHECK CORRECT !"<<endl
int n
cout<<"1 FOR CHANGE PASS OTHER NUMBER FOR CONTIUNE:"
cin>>n
if(n==1)
changepass()
//这是接下来你要加的代码了
}
system("pause")
return 0
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)