Dev或者vs2017编译程序一闪而过的解决方案

新版的VS2017或者DevC++运行程序有时候会一闪而过


方法1:   

在程序最后的return 0;的前面,加上一个system("pause"); 

system("pause");        //pause函数的头文件在stdlib,h(windows.h也行),所以别忘了加上# include <stdlib.h>

所以方法1简单点说就是加上:

# include <stdlib.h>  

system("pause"); 



方法2:   

在程序最后的return 0;的前面,加上一getchar();

rewind(stdin);  //rewind()函数的作用是把文件的当前位置指针指向文件头。
getchar();

如果只加上了getchar();    当程序里面使用scanf函数,会发现需要多按几下程序才会结束。

所以如果考虑到scanf等影响缓存区数据的情况下,前面需要加上rewind(stdin);

关于缓存区的知识点参考:C语言之清空缓存区https://blog.csdn.net/qq_26768741/article/details/50933598



方法3:

这个方法和2原理相同,也是清除缓存区。

#define CLEAR_BUF \
    {\
    int ch; \
while ((ch = getchar()) != EOF && ch != '\n')\
        {\
        ; \
        }\
    }

CLEAR_BUF

待定:    //scanf("%*[^\n]%*c");
            %〔^\n〕将逐个读取缓冲区中的’\n’字符之前的其它字符,%后面的表示将读取的这些字符丢弃,前遇到’\n’字符时便停止读取操作,此时,缓冲区中尚有一个’\n’字符遗留,所以后面的%*c将读取并丢弃这个遗留的换行符,这里的星号和前面的星号作用相同。由于所有从键盘的输入都是以回车结束的,而回车会产生一个’\n’字符,所以将’\n’连同它之前的字符全部读取并丢弃之后,也就相当于清除了输入缓冲区。
	      //while ((ch = getchar()) != ‘\n’ && ch != EOF);  



猜你喜欢

转载自blog.csdn.net/loongstyle/article/details/79968927