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