gpt4 book ai didi

c - 我的(密码)功能有什么问题吗?

转载 作者:行者123 更新时间:2023-11-30 20:26:45 25 4
gpt4 key购买 nike

这个函数是我从网上复制过来的。我不明白 c == 8 && pos 在这个函数中意味着什么,而 ch 是一个 char 它怎么可能等于 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 正在检查 ASCII character 是否值等于退格字符。 && pos 还检查位置是否不为零。它相当于“pos!= 0”。该代码正在从缓冲区中删除退格字符。此外,该函数很容易出现缓冲区溢出。由于您传递的是缓冲区的地址,但没有最大大小,因此当用户输入比分配的内存长的字符串时会发生什么。您还应该传入缓冲区长度作为参数,并验证 pos < buffer length。

关于c - 我的(密码)功能有什么问题吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24121714/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com