为什么以下代码片段在第一个输入后就关闭了呢?
程序在打印后关闭。
#include <stdio.h>
int main( ) {
int a;
int b;
printf( "Enter a first value :");
a = getchar( );
printf( "You entered: ");
putchar( a );
printf( "\n Enter a second value :");
b = getchar( );
return 0;
}
程序在打印后关闭。
"Enter a second value :"
getchar
需要一个newline
是有问题的,这已经引起了无数的麻烦和问题,并且这些问题还会不断涌现。如果 MSVC 做对了一件事情,那就是它的getch
和kbhit
,虽然它们没有解决使用scanf
函数族时类似的问题。 - Weather Vanegetchar()
不需要换行符。发生的情况是伪终端的一个特性,称为行缓冲 - 它不会将任何输入发送到程序,直到键入换行符。如果需要getch()
或kbhit()
的行为,则有方法可以禁用或绕过行缓冲。 - twalbergnewline
。 - Weather Vane