我只是想问一下使用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()
不在屏幕上显示字符(来自在线定义)。
答案 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();
只是为了告诉程序等待任何字符,或换句话说,让窗口保持打开并等待我的按键。