在使用class="superseo">vscode时,如果想让vscode显示外外部独立终端(命令提示符上),运行窗口会一闪而过,需要使用getchar()或者是system("pause")来使控制台停留在运行后的界面。
但当涉及到文件读写的时候,却发现无论是用getchar()还是system("pause")都无法使运行窗口停留。
例如:
#include
using namespace std;
int main()
{
FILE *fp;
char name[50];
int number;
fp=freopen("conf.ini","r",stdin);
scanf("%s%d",name,&number);
fclose(fp);
printf("%s\n%d\n",name,number);
fclose(fp);
system("pause");
return 0;
}
这是由于system("pause")的机制是输入任意键结束,而我们目前的输入是重定向到文件中进行的,所以相当于没有用处了(getchar())同理。
可能有的同学会问:不是已经使用fclose关闭了嘛为啥会没有效果呢?这里的fclose只是起到了关闭文件的作用,并没有使重定向恢复到原来的状态。
那究竟该怎么做呢?
具体的解决方案如下:
对于windows系统,在system("pause")前加入:freopen("CON", "r", stdin);(以"r"为例)
对于Linux系统,在system("pause")前加入:freopen("/dev/console", "r", stdin);(以"r"为例)
修改后发现已经可以正常显示啦:
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)