按下Enter键时结束C程序循环



我正在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();
}

最新更新