在 for 循环中使用 getch() 的重要性

Importance of using getch() inside a for-loop

我只是想问一下使用 getch() 的重要性是什么,尤其是在我们的教授向我们展示的这个 array/for-loop 示例中:

int i;
char pw[7], ch;

printf ("\npw: ");

for (i=0; i<7; i++) {
    ch = getch();
    pw[i] = ch;
    printf ("%c", ch);
}

我尝试删除 ch = getch() 行,当我 运行 程序时发生的事情是循环永远持续下去。

为什么会这样?

我只知道getch()用在程序末尾,不在屏幕上显示字符(来自网上定义)。

如果你注释掉它运行和结束的 getch 行,它不会永远循环,你必须删除更多才能将它变成永远循环。回答你最初的问题 [getch] 得到一个字符,然后程序显示它,就是这样。

getch() 从键盘读取一个字符而不回显它。

所以你的程序正在从键盘(用户输入)中读取一个字符。并将其存储在 ch 变量中,然后将其保存在字符串数组 pw[] 中,最后使用 printf("%c");

回显它

删除 ch = getch();。您的程序停止从键盘读取。并用 (uninitialized ) ch 的相同值填充 pw[] 恰好 7 次,然后退出循环。

根据您发布的内容,您的程序在其他地方挂起,您正在测试密码的有效性。

Getch() - 从 STDIN 读取单个字符,如果 none 存在,等待它!

在您的示例中,Getch() 起着核心作用,读取用户输入(给定 7 个字符)。

如果删除此语句,不仅会使 int ch 未初始化(没有有效值), 但是循环不会等待任何东西(因为 getch() 不会等待)。

有时,尤其是在学习 c++ 时,运行 来自 Visual Studio 的简单程序(或您使用的任何 IDE)...
运行程序很短,看不到输出!
所以在最后添加 getch();,只是告诉程序等待任何字符,或者换一种说法,让 window 打开并等待我的按键。