1

在这个非常棒的网站中搜索有关 getchar() 函数的所有内容时,我发现了这篇文章:为什么 getchar() 不等我在 scanf() 之后按 Enter 键?

#include <stdio.h>

int main()
{
    int value;
    printf("1. option 1.\n2. option 2.\n3. option 3.\n4. Exit\n\nMake an option: ");
    scanf("%d", &value);
    switch (value)
    {
        case 1:
            printf("you selected the option 1.");
            break;
        case 2:
            printf("you selected the option 2.");
            break;
        case 3:
            printf("you selected the option 3.");
            break;
        case 4:
            printf("goodbye");
            break;
        default:
            printf("thats not an option");
            break;
    }
    getchar();//here is the question,why it's useful ?
    return 0;
}

我了解整个程序,并且我了解每次调用它时,getchar 都会从文本流中读取下一个输入字符并将其作为其值返回。也就是说,之后

c = getchar();

变量 c 包含输入的下一个字符。字符通常来自键盘。

但问题来了:为什么程序员在程序结束时调用 getchar()?

4

3 回答 3

4

这种做法特别适用于控制台应用程序,这样您就可以强制程序在您按下一个键之前不要停止,以便您可以读取输出。通常程序执行结束时控制台会关闭

于 2011-09-10T22:27:48.027 回答
1

最后一个 getchar() 函数是为了让应用程序在退出前等待按键。

于 2011-09-10T22:17:56.280 回答
1

一般在控制台应用程序中,当你在IDE中运行代码时,会弹出一个终端窗口运行代码,而主函数一结束终端窗口也消失了,用户看不到最后的输出。我们需要采取某种方式让屏幕等待。一种方法是通过等待输入使程序不被终止。有些人在最后使用无缓冲输入函数,所以只要你按下一个键,函数就会读取它并立即返回。在这种情况下,您使用getchar的是缓冲输入函数,在这种情况下,当您完成检查屏幕后,按任意字符并按 Enter,这将从函数返回,然后终止程序。您也可以使用scanf或其他方式来握住屏幕。

它有利于调试,请从最终版本中删除它。

于 2011-09-11T06:35:58.213 回答