关于getchar()用法的一个简单问题?

时间:2011-09-10 22:15:19

标签: c getchar

在这个非常棒的网站上搜索关于getchar()函数的所有内容时,我发现了这篇文章:Why doesn't getchar() wait for me to press enter after scanf()?

#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()?

3 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:1)

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

答案 2 :(得分:1)

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

调试好,请从最终版本中删除。