在 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 打开并等待我的按键。
我只是想问一下使用 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 打开并等待我的按键。