新网创想网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
这个简单
创新互联是一家专注于成都网站设计、网站建设与策划设计,昭通网站建设哪家好?创新互联做网站,专注于网站建设十载,网设计领域的专业建站公司;建站业务涵盖:昭通等地区。昭通做网站价格咨询:13518219792
这就就是加密函数
int password()
{
int n=0,a=0;
char mi1[80];
int i=0,a1,a2,a3;
int index=0,m=0;
char str[30];
char user[12];
do{
printf("\n\t************************how are you*****************************\n\n\n");
printf("\t\tplease input the username:");
scanf("%s",user);
a1=strcmp(user,"20085126");
if(a1==0)
{
FILE *f1;
if((f1=fopen("1mi.txt","rt"))==NULL)
{
printf("Cannot open file strike any key exit!");
exit(0);
}
rewind(f1);//重定向文件内部指针将文件内部的位置指针重新指向一个流(数据流/文件)的开头
fgets(mi1,7,f1);
do{
printf("\n\t\tplease input the password:");
scanf("%s",str);
printf("\n");
if(!strcmp(str,user)) /*比较密码是否一样*/
m=1;
index++;
if(index3)
{
printf("\n\t*****************************************************\n\n");
printf("\t\tThe error number is more than three times while input the password, exit system!\n");
printf("\n\t*****************************************************\n\n\n");
return 0;
}
}while(m==0);
fclose(f1);
}
}
}
睿尔科技
更新学习资料
//专门注册用户和登录的代码
#include stdio.h
#include stdlib.h
#include string.h
#include stdbool.h
#include windows.h
typedef struct
{
int x;
int y;
}PT_STRUCT;
typedef struct
{
char user[20];
char pw[20];
}USER_STRUCT;
PT_STRUCT pt;
bool LoginSuccess=false;
char CurrentUser[20]={'\0'};
int UserCount=0;
USER_STRUCT* pUser=NULL;
char WorkDir[100]={'\0'};
char DataFile[100]={'\0'};
void setxy(int x, int y) //设置光标位置
{
COORD coord = {x, y};
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
}
void getxy() //获取当前光标所在位置
{
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
COORD coordScreen = {0, 0}; //光标位置
CONSOLE_SCREEN_BUFFER_INFO csbi;
if(GetConsoleScreenBufferInfo(hConsole, csbi))
{
pt.x=csbi.dwCursorPosition.X;
pt.y=csbi.dwCursorPosition.Y;
}
}
void input(char* buf)
{
int len=strlen(buf);
int c;
int i=0;
while(1)
{
c=getch();
if(c==8 i==0)
{
continue;
}
if(c==10 || c==13) break;
if(c==8 i0)
{
buf[i-1]='\0';
i--;
getxy();
setxy(pt.x-1,pt.y);
printf(" ");
setxy(pt.x-1,pt.y);
}
else if(i=0)
{
printf("*");
buf[i++]=c;
}
if(i=buf)
{
return;
}
}
}
void GetUserDataFromFile()
{
UserCount=GetPrivateProfileInt("USER","user_count",0,DataFile);
if(pUser!=NULL)
{
free(pUser);
}
pUser=(USER_STRUCT*)malloc(sizeof(USER_STRUCT)*(UserCount+1));
int i;
char ch[5];
for(i=0;iUserCount;i++)
{
memset(ch,'\0',5);
sprintf(ch,"%d",i+1);
GetPrivateProfileString(ch,"user","",pUser[i].user,20,DataFile);
GetPrivateProfileString(ch,"pw","",pUser[i].pw,20,DataFile);
}
}
void WriteDataToFile()
{
int i;
char t[5]={"\0"};
sprintf(t,"%d",UserCount);
WritePrivateProfileString("USER","user_count",t,DataFile);
for(i=0;iUserCount;i++)
{
sprintf(t,"%d",i+1);
WritePrivateProfileString(t,"user",pUser[i].user,DataFile);
WritePrivateProfileString(t,"pw",pUser[i].pw,DataFile);
}
GetUserDataFromFile();
}
bool login()
{
if(LoginSuccess==true)
{
printf("\n当前已有用户登录! 重新登录吗?(Y/N)");
char sel;
fflush(stdin);
scanf("%c",sel);
if(sel=='y' || sel=='Y')
{
LoginSuccess==false;
}
else
{
return false;
}
}
char user[20]={'\0'};
char pw[20]={'\0'};
printf("\nInput User: ");
fflush(stdin);
scanf("%s",user);
printf("\nInput Password: ");
fflush(stdin);
input(pw);
bool find=false;
int i;
for(i=0;iUserCount;i++)
{
if(strcmp(user,pUser[i].user)==0 strcmp(pw,pUser[i].pw)==0)
{
find=true;
LoginSuccess=true;
strcpy(CurrentUser,pUser[i].user);
break;
}
}
if(find==true)
{
return 1;
}
else
{
return 0;
}
}
bool regist(char* ErrBuf)
{
char user[20]={'\0'};
char pw1[20]={'\0'};
char pw2[20]={'\0'};
printf("\nInput User: ");
fflush(stdin);
scanf("%s",user);
int i;
for(i=0;iUserCount;i++)
{
if(strcmp(user,pUser[i].user)==0)
{
strcpy(ErrBuf,"User Repeat");
return false;
}
}
printf("\nInput Password: ");
fflush(stdin);
input(pw1);
printf("\nReInput Password: ");
fflush(stdin);
input(pw2);
if(strcmp(pw1,pw2)!=0)
{
strcpy(ErrBuf,"Password Differ");
return false;
}
strcpy(pUser[UserCount].user,user);
strcpy(pUser[UserCount].pw,pw1);
UserCount++;
return true;
}
int main()
{
_getcwd(WorkDir,100); //取得当前程序的绝对路径
strcpy(DataFile,WorkDir);
strcat(DataFile,"\\user.dat");
if(access(DataFile,0))
{
printf("\n用户数据文件不存在, 按任意键将创建文件");
getchar();
FILE* fp;
fp=fopen(DataFile,"wb");
int re=fputs("[USER]\nuser_count=0",fp);
if(re=0)
{
printf("\n用户数据文件创建成功!");
}
else
{
printf("\n用户数据文件创建失败!");
}
getchar();
fclose(fp);
}
GetUserDataFromFile();
while(1)
{
system("cls");
printf("已注册用户%d\n",UserCount);
if(LoginSuccess==true)
{
printf("Logined User : %s",CurrentUser);
}
printf("\n-------------------------------");
printf("\n登录---1");
printf("\n注册---2");
printf("\n退出---3");
printf("\n-------------------------------");
printf("\n\nInput:(1,2,3) : ");
fflush(stdin);
int sel;
bool re;
char ErrBuf[50]={'\0'};
scanf("%d",sel);
switch(sel)
{
case 1:
re=login();
if(re==true)
{
printf("\nLogin Success! Current User: %s",CurrentUser);
fflush(stdin);
getchar();
}
else
{
printf("\nLogin Fail!");
fflush(stdin);
getchar();
}
break;
case 2:
memset(ErrBuf,'\0',50);
re=regist(ErrBuf);
if(re!=true)
{
printf("%s Register Fail!",ErrBuf);
fflush(stdin);
getchar();
}
else
{
WriteDataToFile();
printf("\nRegister Success!");
fflush(stdin);
getchar();
}
break;
case 3:
exit(0);
break;
default:
break;
}
}
return 0;
}
可以定义两个字符数组;
一个存放正确密码;
另一个数组内的内容由用户输入;
调用strcmp函数,若返回值为0则说明两者完全相等;
列子:
char a[10]="4488" //保存正确密码
char b[10];
gets(b) //用户输入
if(strcmp(a,b)==0)
printf(" 匹配成功 ");
else
printf("匹配失败");
更多追问追答
追问
#include
void main()
{
char a[10]="8844";
char b[10];
gets(b)
if(strcmp(a,b)==0)
printf("yes");
else
printf("no");
getch();
c语言中可采用getch()函数来实现输入密码字符时,不显示字符到终端上,这时,只需要显示出一个相应的*就可以达到效果了。参考代码及运行效果如下图: