问题的发现:(想要看干货可以直接跳过这段)

我最近刚了解到关于栈的用法,于是按照参考书寻找代码,并把它敲到电脑上。编译运行代码后发现无法终止,在网上查找各种资料,总结如下。

因为我的电脑是Windows和Mac双系统的所以都试了一遍。

Windows端:

在(Visual Studio 2019/Dev c++/CodeBlocks)上编译运行后可以用ctrl+z终止并可以显示出最后结果;编译后的exe文件按住ctrl+z后程序会直接退出,连显示都没有。

以下是在编译器下运行的结果:

在clion上编译运行按ctrl+z没有用,编译后的exe程序也是会直接退出。

解决办法:

前三种在编译器里都可以运行,在编译后的exe文件如果要想使用可以在程序里(主函数里int main() )加入system("pause");

#include <stdio.h>
int main()
{
你要写的代码
while(scanf("%d",&n)!=EOF)
{
.....
}
system("pause"); //这一步至关重要
}

效果如下:

CLion的情况就比较麻烦,但也有解决办法

如果你编的是C语言:(规避CLion的bug)

#include <stdio.h>
int main()
{
你的代码...
while(scanf("%d",&n)!=EOF)
{
.....
if (getchar() == '\n') //这一步至关重要
{
break;
}
}
return ;
}

如果编译完效果如下:

但是编译完的exe文件,运行后还是会直接退出这时就应该在程序里(主函数里int main() )加入system("pause");

#include <stdio.h>
int main()
{
你的代码...
while(scanf("%d",&n)!=EOF)
{
.....
if (getchar() == '\n')
{
break;
}
}
system("pause"); //这一步至关重要
return ;
}

编译后效果如下:

如果你编的是C++语言:(规避CLion的bug)

#include <bits/stdc++.h>
using namespace std;
int main()
{
你的代码...
while(cin>>n)
{
.....
if (cin.get() == '\n') //这一步至关重要
{
break;
}
}
return ;
}

cin是终端输入,也被称之为标准输入(standard input),cin的主要功能就是从标准输入读入一个值。当从键盘上输入一串字符并按回车后,这些字符会首先被送到输入缓冲区中存储。每当按下回车键后,cin.get()就会检测缓冲区中是否有了可读的数据。

效果如下:

同样编译完的exe文件,运行后还是会直接退出这时就应该在程序里(主函数里int main() )加入system("pause");

#include <bits/stdc++.h>
using namespace std;
int main()
{
你的代码...
while(cin>>n)
{
.....
if (cin.get() == '\n')
{
break;
}
}
system("pause"); //这一步至关重要
return ;
}

效果和C同样就不展示了。

Mac端:

Xcode:无论是在Xcode编译运行,还是在它编译后的文件上运行按住ctrl+d都可以运行。

效果如下:

CLion:在程序上按ctrl+d进程会直接结束,但是在它编译后的程序运行会显示正确结果

效果如下:

解决办法:

Xcode在Mac上的表现接近完美。

CLion可以在参考Windows上的解决办法,在while里插入if语句;或者直接在调试(Debug)里运行。

最新文章

  1. servlet 之request
  2. 从零开始攻略PHP(7)——面向对象(上)
  3. RHCE实验环境|rhel7-lab
  4. 第37讲:List的foldLeft、foldRight、sort操作代码实战
  5. ajax的详细学习
  6. poj3月题解
  7. 使用 libevent 和 libev 提高网络应用性能
  8. javascript将毫秒还原为可读时间格式
  9. jsf小例子
  10. hdu 3572 Escape 网络流
  11. 结构-行为-样式-Javascript笔记
  12. Android中典型的ROOT原理(5)
  13. SqlServer存储过程及函数
  14. 创建服务的注册与发现 Eureka (四)
  15. Java循环语句怎么用?经典排序算法见真知
  16. java学习之—合并两个数组并排序
  17. Maven 手动添加第三方依赖包及编译打包和java命令行编译JAVA文件并使用jar命令打包
  18. spring cloud 学习
  19. 看不见的攻击面:查看 SQLite 数据库就中招?
  20. 【数组】Spiral Matrix

热门文章

  1. AJ学IOS(48)多线程网络之多线程简单了解
  2. Apache SkyWalking
  3. SVG案例:动态去创建元素createElementNS
  4. svg整体缩放至指定大小
  5. Delphi学习手记——单引号和双引号的区别
  6. 百度api实现人脸对比
  7. PHP函数:func_num_args
  8. 测试需要用到的chrome调试
  9. jmeter引入外部jar包的方法
  10. Scrapy模拟登录信息