有时当编译器执行完后,结果界面不会停在,而是一闪而没,看不到执行结果。在结尾加上getchar同样一闪而没。
这是因为程序读入数据是从读入缓冲区读取的,当读入缓冲区有数据残留时就会直接从缓冲区读入数据,不会等待输入,就会出现上述结果。
解决办法有两种:
1、清空缓冲区数据。利用fflush(stdin)函数,这是标准做法。
在Linux平台下可用setbuf(stdin,NULL);
2、scanf("%*[^\n]%*c");这是利用扫描集将缓冲区的数据全部取出以达到清空缓冲区数据。
(解释:%*[^\n]是逐个读取'\n'字符之前的其他字符,%后面的*是将这些读取的字符丢掉,当遇到'\n'时停止读取操作,此时缓冲区上有一个'\n'残留,%*c是读取并丢掉这个遗留的换行符。)