首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

【代码】帮小弟我看一下,不长不复杂!

2012-04-21 
【代码】帮我看一下,不长不复杂!!!#includewindows.hchar *login(){int i 0, secondchar password, pw[

【代码】帮我看一下,不长不复杂!!!
#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次了,如果一次性输入组合字符,会执行更多次!!!

热点排行