我正在C中开发一个输入验证程序。我有一个名为show_password
的函数,它接受用户输入8-13个字符。该代码现在只允许用户输入13个字符才能退出。每当用户为8-13个字符按下enter
时,我需要退出程序。
我定义了一个宏:
#define PASSWORD_LENGTH 13
这是我的代码
// password
void _password()
{
char pass_word[PASSWORD_LENGTH];
printf("nEnter 8-13 character Passwordn");
for (j=0; j<=PASSWORD_LENGTH; j++) //at this code is where i need to make the change
{
pass_word[j] = getch(); // Hidden password
printf("*");
}
pass_word[j] = ' ';
printf("n");
printf("password entered is:");
for (j=0; pass_word[j] != ' '; j++ )
{
printf("%c",pass_word[j]);
}
getch();
}
您可以:
- 检查从输入读取的字符是否等于
'n'
或'r'
,以检测用户何时输入RETURN
- 检查索引是否大于或等于8(这意味着用户正在按回车键作为第9个字符或之后的字符(
- 使用
break
关键字退出循环
示例:
pass_word[j] = getch();
if ((pass_word[j] == 'n' || pass_word[j] == 'r') && j >= 8)
break;
getch((返回用户按下的键的ASCII值作为输入,回车键是回车。当您按下回车键时,不会返回回车键的ASCII数值,而是返回回车(CR(。
r
用作回车符,表示键盘上的回车或enter
键类似堆栈溢出问题
此代码工作于
// password
void _password()
{
char pass_word[PASSWORD_LENGTH];
printf("nEnter 8-13 character Passwordn");
for (j=0; j<=PASSWORD_LENGTH; j++)
{
pass_word[j] = getch();
printf("*");
if (pass_word[j] == 'n' || pass_word[j] == 'r')
break;
// Hidden password
}
pass_word[j] = ' ';
printf("n");
printf("password entered is:");
for (j=0; pass_word[j] != ' '; j++ )
{
printf("%c",pass_word[j]);
}
getch();
}