【代码】帮我看一下,不长不复杂!!!
#include"windows.h"
char *login()
{
int i = 0, second;
char password, pw[19];
label:printf("请输入密码:");
while( 1 )
{
password = getch();
if( password < '!' || password > '~' )
{
if( password == '\b' || password == '\r' )
{
if( password == '\r' ) break;
else printf("\b \b"), i --;
}
else
{
second = 3;
while( second )
{
system("cls");
printf("错误输入,请重新输入\t");
printf("%d", second -- );
Sleep(1200);
}
system("cls");
goto label;
}
}
else
{
pw[i] = password;
i ++;
printf("*");
}
}
pw[i] = '\0';
return pw;
}
void main()
{
char *password = "infinite";
if( strcmp( password, login() ) == 0 ) printf("密码正确\n\n");
else printf("密码不正确\n\n");
}
郁闷的地方就在 红色字 部分
我想问,为什么 循环结束一次后即 second = 0 后,程序会令 second = 3,然后再来一次循环直到 second = 0;
也就是说这个循环 每次都执行了 2次 ,那个 second = 3; 无论是放在 循环前面,还是循环后面都是这样的结果
如果不懂我在问什么,可以去运行一下,情况是输入 password < '!' || password > '~'
[解决办法]
嗯,输入汉字是可能出现这种问题的,汉字有的占两个字符,有的占一个字符,当占用两个字符时,就回出现楼主的问题
[解决办法]
嗯,输入汉字就是一下子输入2个字符,执行2次了,如果一次性输入组合字符,会执行更多次!!!