char keyin, buffer[1024];
do
{
keyin=gets(buffer);
}
while (keyin != "\n");
我一直在尝试在 C 中编写一个暂停函数,其中用户通过按 Enter 键退出暂停状态。用户在哪里写“暂停”,这个函数就会被执行。我已经在这个功能上工作了一段时间,但它让我望而却步。我已经以几种不同的方式实现了代码,但它们都不起作用。我怀疑这是因为 "\n" 与 keyin 的比较。我认为“\n”不会直接转换为回车键。
您不需要while
循环来等待单个 Enter 键按下。它将等待(您可以按任意键),直到您按 Enter:http ://en.cppreference.com/w/c/io/gets
但是您需要保留大量空间——如果有人一直按任何其他键“直到发生某些事情”怎么办?缓冲区将溢出,您的程序将(很可能)崩溃。
您可能想使用getchar - 这将一次发送一个按键。
注意:Enter 键通常发送 ASCII 代码 13 (0x0D),而不是 10 (0x0A)。您可以改用“\r”(注意其他人对“字符”与“字符串”的注释!),或防止所有混淆并使用十六进制或十进制值。
这与您在输出时习惯的 '\n' 的行为不同,因为只有某些函数会将文本中的代码 '\n' 扩展或转换为操作系统所需的行尾序列。
您不能将字符串与C==
或!=
C 中的字符串进行比较。您必须将字符串的内容与类似strcmp
(或者,最好是更安全的变体之一)之类的函数进行比较,例如:
while (strcmp(keyin, "\n") != 0);
顺便说一句,您永远不应该实际使用gets
. 安全可靠地使用是不可能的。