while(scanf("%d",&n)!=EOF) / while(cin>>n)终止问题
问题的发现:(想要看干货可以直接跳过这段)
我最近刚了解到关于栈的用法,于是按照参考书寻找代码,并把它敲到电脑上。编译运行代码后发现无法终止,在网上查找各种资料,总结如下。
因为我的电脑是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)里运行。
while(scanf("%d",&n)!=EOF) / while(cin>>n)终止问题的更多相关文章
- while(scanf("%d",&n)!=EOF)与while(cin>>n)
我们知道scanf函数是C语言里面的,其返回值是,被输入函数成功赋值的变量个数.针对于int counts = scanf("%d",&n);来说如果赋值成功那么其返回值 ...
- 7-16 一元多项式求导(20 分)(有关while(scanf("%d",&n)!=EOF))
7-16 一元多项式求导(20 分) 设计函数求一元多项式的导数. 输入格式: 以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过1000的整数).数字间以空格分隔. 输出格式: 以与输入相同 ...
- while(scanf("%d",&n)!=EOF)
scanf的返回值由后面的参数决定 scanf("%d%d", &a, &b); 如果a和b都被成功读入,那么scanf的返回值就是2 如果只有a被成功读入,返回值 ...
- c的scanf为什么比c++的cin快
很早就知道,c的scanf(printf)比c++的快.刷题时尤其明显,在这上面超时是常有的事儿. 但,这是别人告诉我的,c快. 为什么快? 从网上借鉴一个例子做个简单测试: 1.cpp // ...
- POJ 1287 Networking (最小生成树)
Networking 题目链接: http://acm.hust.edu.cn/vjudge/contest/124434#problem/B Description You are assigned ...
- 2018 ACM-ICPC 中国大学生程序设计竞赛暨丝绸之路程序设计竞赛
三道大水题,其它题都不会做,真是尴尬和无奈啊…… 有想法,但是解决不了,感觉个人不会一些基本解法,终究还是个人学习的内容太少了 B. Goldbach /* 数值较小,<2^63,分解的两个素数 ...
- poj1584 A round peg in a ground hole【计算几何】
含[判断凸包],[判断点在多边形内],[判断圆在多边形内]模板 凸包:即凸多边形 用不严谨的话来讲,给定二维平面上的点集,凸包就是将最外层的点连接起来构成的凸多边形,它能包含点集中所有的点. The ...
- 1001 Duplicate Pair
1.题目戳这里 2.代码: #include<stdio.h> #include<string.h> int main() { int n; while(scanf(" ...
- GCD - Extreme(欧拉函数变形)
题目链接:https://vjudge.net/problem/UVA-11426 题目大意: 给出整数n∈[2,4000000],求解∑gcd(i,j),其中(i,j)满足1≤i<j≤n. 的 ...
随机推荐
- 数组的增加与删除(push、pop、unshift、shift)
1. 数组增删和换位置(原数组将被修改) push() //在数组最后面插入项,返回数组的长度 数组1改后的长度 = 数组1.push(元素1); pop() //取出数组中的最后一 ...
- break与continue对比
- break 用来终止循环 - continue 用来跳出当前循环,继续下次循环 // 求1到100之间所有不能被3整除的整数的第一个大于2000的和 var sum = 0; for(var i= ...
- 高德APP启动耗时剖析与优化实践(iOS篇)
前言最近高德地图APP完成了一次启动优化专项,超预期将双端启动的耗时都降低了65%以上,iOS在iPhone7上速度达到了400毫秒以内.就像产品们用后说的,快到不习惯.算一下每天为用户省下的时间,还 ...
- Tcxgrid使用例子
1.更改某个单元格的值后,其他单元格的值也相应改变 直接点击单元格进行更改值,然后在改单元格增加相应的事件: procedure Tfrm_BarCode_makecl5.gdtv_1select_t ...
- C++关于容器vector的使用方法以及#ifdef #else #endif #if #ifndef 的使用
//此处根据0还是1来判断具体使用那一段主函数 #if 1 #define WAY #endif #ifdef WAY #include <iostream> #include<st ...
- 用python画出全球疫情趋势变化图
前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:谦睿科技 PS:如有需要Python学习资料的小伙伴可以加点击下方链接 ...
- Some Modern Softwares' drawbacks: User experience 12/29/2015
In the nowadays, there are many APP in the PC or smart Phone. Some of them can't meet the customers' ...
- Spring Cloud 系列之 Gateway 服务网关(二)
本篇文章为系列文章,未读第一集的同学请猛戳这里:Spring Cloud 系列之 Gateway 服务网关(一) 本篇文章讲解 Gateway 网关的多种路由规则.动态路由规则(配合服务发现的路由规则 ...
- BI报表分析和数据可视化,推荐这三个开源工具!
开源篇 一.Superset 1.技术架构:Python + Flask + React + Redux + SQLAlchemy 2.使用人群: (1)开发/分析人员做好看板,业务人员浏览看板数据 ...
- WTF Python:有趣且鲜为人知的Python特性
Python 是一个设计优美的解释型高级语言,它提供了很多能让程序员感到舒适的功能特性.但有的时候,Python 的一些输出结果对于初学者来说似乎并不是那么一目了然. 这个有趣的项目意在收集 Pyth ...