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

时间:2015-11-08 05:16:34

标签: c arrays for-loop getch

我只是想问一下使用getch()的重要性,特别是在我们的教授向我们展示的数组/ 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()不在屏幕上显示字符(来自在线定义)。

3 个答案:

答案 0 :(得分:0)

如果你注释掉getch线它运行并结束,它不会永远循环,你必须删除更多才能永远地将它更改为循环。要回答你的初始问题[getch]得到一个字符,然后程序显示它,就是全部。

答案 1 :(得分:0)

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

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

删除ch = getch();。你的程序停止从键盘读取。并使用相同的(未初始化的)ch精确填充pw [] 7次,然后退出循环。

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

答案 2 :(得分:0)

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

在您的示例中,Getch()扮演核心角色,读取用户输入(给定7个字符)。

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

有时,特别是在学习c++时,从Visual Studio(或您使用的任何IDE)运行一个简单的程序... ... 运行程序很短,你看不到输出!
所以最后添加getch();只是为了告诉程序等待任何字符,或换句话说,让窗口保持打开并等待我的按键。