C 我的(密码)功能有什么问题?

C 我的(密码)功能有什么问题?,c,char,C,Char,我从网上复制了这个功能。我不明白c==8&&pos在这个函数中是什么意思,ch是一个字符,它怎么能等于8。我想把密码的长度改为4,现在是13。当我试图修改和编译它时。程序运行成功,但没有停止获取密码,即使按enter键,也没有停止获取输入密码 我认为它与以下函数中的c==8&&pos有关 void password(char buffer[]) { char c; int pos = 0; printf("Enter Password :

我从网上复制了这个功能。我不明白
c==8&&pos
在这个函数中是什么意思,
ch
是一个字符,它怎么能等于
8
。我想把密码的长度改为4,现在是13。当我试图修改和编译它时。程序运行成功,但没有停止获取密码,即使按enter键,也没有停止获取输入密码

我认为它与以下函数中的
c==8&&pos
有关

void password(char buffer[])
{
        char c;
        int pos = 0;
            printf("Enter Password : ");
        do
            {
             c = getch();
                if( isprint(c) )
                {
                    buffer[ pos++ ] = c;
                    printf("%c", '*');
                }
                else if( c == 8 && pos )
                {
                    buffer[ pos-- ] = '\0';
                    printf("%s", "\b \b");
                }
            }while( c != 8 );
}

c==8正在检查该值是否等于退格字符pos还检查位置是否不为零。它相当于“pos!=0”。代码正在从缓冲区中删除退格字符。此外,此函数可能容易发生缓冲区溢出。由于您传入的是缓冲区地址,但不是最大大小,因此当用户输入的字符串长于分配的内存时会发生什么情况。您还应将缓冲区长度作为参数传入,并验证pos<缓冲区长度。

8是ASCII退格字符,当您按下退格键时,该部分正在处理删除字符。
13
Enter
键的ASCII代码<代码>while(c!=13)将在点击
Enter