注册 登录
编程论坛 C++教室

帮忙解释一下这个程序

飘到心海 发布于 2010-05-09 17:23, 479 次点击
while((a>=0)&&(word[a++]=getch())!=13) //密码输入
        {
           if(word[0]=='\b')
           {
                a=0;
                continue;
           }
            else if(word[a-1]=='\b')
            {
                cout<<'\b'<<'\0'<<'\b';
                a-=2;
            }
                 else
                     putchar('*');
        }
        word[--a]='\0';
尤其是红色的部分,最好详细说下,不明白啊,先行谢过。

[ 本帖最后由 飘到心海 于 2010-5-9 17:24 编辑 ]
6 回复
#2
apull2010-05-09 17:51
(a>=0)&&(word[a++]=getch())!=13
分解:
a:(a>=0)
b:word[a++]=getch()
c:b!=13
d:a && c

word[0]=='\b'  检测是不是按了删除键。

 putchar('*'); 不显示输入字符,用*替换。
#3
飘到心海2010-05-09 19:59
回复 2楼 apull
b!=13中的13怎么理解?就是数字13吗?
#4
飘到心海2010-05-09 20:04
回复 2楼 apull
可以把这段程序简单的讲解一下吗?实在看不明白,谢谢你
#5
yc25757572010-05-10 11:02
while((a>=0)&&(word[a++]=getch())!=13) //密码输入 ,这句是判断a是否大于或者等于0并且是否将光标移到本行开头。这里word[a++]=getch(),接收输入的字符,判断是否等于13,我们查ASCII码,13对应的是\r,即回车,将当前位置移到本行开头,即12345,现在光标在5后面,如果等于13,则光标移到1前面。
        {
           if(word[0]=='\b') //判断是不是删除
           {
                a=0;                //是删除,则将a置0,继续输入
                continue;
           }
            else if(word[a-1]=='\b') //判断是不是删除
            {
                cout<<'\b'<<'\0'<<'\b';    //是删除,则将word[a-1]清空,光标定位到word[a-1]的前面,\0是空操作字符
                a-=2;
            }
                 else
                     putchar('*');            //如果不是删除,则输出*
        }
#6
温度2010-05-10 12:59
回复 3楼 飘到心海
b不等于13,13是数字
#7
南国利剑2010-05-10 13:22
2楼说的完全正确
严重同意2楼。

1