为什么我的教授使用两个getchar();?[英] Why is my professor using two getchar();?

本文是小编为大家收集整理的关于为什么我的教授使用两个getchar();?的处理方法,想解了为什么我的教授使用两个getchar();?的问题怎么解决?为什么我的教授使用两个getchar();?问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

为什么我的教授使用两个getchar();在我们的C程序教程结束时?

,这是什么"更好的方法"?

推荐答案

最好的更好方法是不添加任何代码以保持控制台窗口打开:从控制台窗口直接启动程序.

如果您必须从IDE启动程序,并且希望该程序在用户按Enter之前不终止程序,则一个单个getchar()应该这样做.

在用户按键之后,使程序终止的第二好方法是始终确保没有输入,并使用一个getchar().

.

我想您的老师使用2 getchar()的原因是,先前输入的输入缓冲区中已经有一个字符.要消耗输入中的所有字符,直至输入,这是通常的:

int ch;
/* ... */
printf("Press Enter"); fflush(stdout);
while ((ch = getchar()) != '\n' && ch != EOF) /* void */;

其他推荐答案

他正在等待用户输入,以便您可以看到程序的输出,否则它将完成,并且不会可见输出(取决于OS).取出并尝试一下.

其他推荐答案

他希望控制台保持打开状态,并等待用户按键.我认为要记住,取决于" getchar()"上方的教授计划中发生的情况.缓冲区可能仍然有一些东西,因此他添加了第二个" getchar()".

并不是最优雅的方法.

编辑:这是一个示例.从" scanf()"的缓冲区中,如果添加第二个" getChar()",则仍然存在剩余的" \ n".您必须在" getchar()"之前冲洗缓冲区.

#include <stdio.h>

main()
{
int input;
scanf("%d", &input);
printf("The input is %d\n", input);
getchar();
return 0;
}

编辑2:这是一种从中获取的解决方案.

int c;
printf( "Press ENTER to continue... " );
fflush( stdout );
do c = getchar(); while ((c != '\n') && (c != EOF));

本文地址:https://www.itbaoku.cn/post/359342.html