我已经从网上复制了这个功能。我不明白c == 8 && pos
在这个函数中的含义是什么,而ch
是char,它怎么能等于8
。我想将密码的长度更改为4,现在是13.当我尝试更改并编译它时。该程序运行成功,但它不会停止输入密码,即使按下输入它也没有停止输入密码。
我认为必须在以下函数中对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 );
}
答案 0 :(得分:1)
c == 8正在检查ASCII character值是否等于退格符。 &安培;&安培; pos还检查位置是否为零。它相当于" pos!= 0"。代码正在从缓冲区中删除退格字符。此外,此功能可能容易出现缓冲区溢出。由于您传入的是缓冲区的地址,但没有最大大小,因此当用户输入的字符串长于分配的内存时会发生什么。您还应该将缓冲区长度作为参数传入,并验证该位置<缓冲长度。