================
这是代码:
struct Messages{
char count[20];
char password[20];
};
int passw(struct Messages *pass,int sort)
{ int j=0,i=0,f=0;
struct Messages *pass1=pass,pass2;
do{
if(sort==1)
printf(“\t\t密码:”);
else
{
i=0;j=0;f=0;
pass1=&pass2;
printf(“\n\t\t再次输入密码:”);
}
;
while((pass1->password[i]=getch())!=”\r”)
{
if(pass1->password[i]==”\b”&&j!=0)
{
printf(“\b \b”);
j–;
f=1;
i–;
}
else
f=0;
if(f==0)
printf(“*”);
i++;
j++;
}
sort++;
}while(sort==2);
puts(pass->password);
puts(pass2.password);
if(sort==3&&strcmp(pass->password,pass2.password)!=0)
{
printf(“\n\t\t【两次密码输入错误!请重新注册!】”);
Sleep(30000);
return 0;
}
return 1;
}
解决方案
10
题主 在声明 pass2的时候,没有初始化。
pass2 = {0};
就可以了。
pass2 = {0};
就可以了。
80
10
仅供参考:
#include <conio.h>
#include <stdio.h>
char pw[40];
int i,ch;
FILE *f;
void main() {
cprintf("\r\nPassword:");
i=0;pw[i]=0;
while (1) {
ch=getch();
if (ch==13 || i>=39) break;
switch (ch) {
case 27:
cprintf("\rPassword: %40s"," ");
cprintf("\rPassword: ");
i=0;pw[i]=0;
break;
case 8:
if (i>0) {
i--;
pw[i]=0;
cprintf("\b \b");
}
break;
default:
pw[i]=ch;
i++;
pw[i]=0;
cprintf("*");
break;
}
}
cprintf("\r\n");
f=fopen("password.txt","w");
fprintf(f,"%s\n",pw);
fclose(f);
}