【问题标题】:a simple question about getchar() usage?关于 getchar() 用法的简单问题?
【发布时间】:2011-09-10 22:15:18
【问题描述】:

在这个非常棒的网站上搜索有关 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()?

【问题讨论】:

    标签: c getchar


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 作者可能是为了防止Windows cmd在他看到输出之前关闭。
      【解决方案3】:

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

      这对调试很有好处,请从最终版本中删除它。

      【讨论】:

        猜你喜欢
        • 2011-10-29
        • 2011-09-21
        • 1970-01-01
        • 1970-01-01
        • 2023-03-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-02-12
        相关资源
        最近更新 更多