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. 的 ...
随机推荐
- 【python实现卷积神经网络】开始训练
代码来源:https://github.com/eriklindernoren/ML-From-Scratch 卷积神经网络中卷积层Conv2D(带stride.padding)的具体实现:https ...
- 假的数论gcd,真的记忆化搜索(Codeforce 1070- A. Find a Number)
题目链接: 原题:http://codeforces.com/problemset/problem/1070/A 翻译过的训练题:https://vjudge.net/contest/361183#p ...
- [总结]最近公共祖先(倍增求LCA)
目录 一.定义 二.LCA的实现流程 1. 预处理 2. 计算LCA 三.例题 例1:P3379 [模板]最近公共祖先(LCA) 四.树上差分 1. 边差分 2. 点差分 3. 例题 一.定义 给定一 ...
- 技术债务(Technical debt)的产生原因及衡量解决
第一次发布代码,就好比借了一笔钱.只要通过不断重写来偿还债务,小额负债可以加速开发.但久未偿还债务会引发危险.复用马马虎虎的代码,类似于负债的利息.整个部门有可能因为松散的实现,不完全的面向对象的设计 ...
- substr和substring之间的区别
substr 和 substring都是JS 截取字符串函数,两者用法很相近,下面是两者的语法很示例: substr 方法 返回一个从指定位置开始的指定长度的子字符串.stringvar.substr ...
- 曹工说Redis源码(7)-- redis server 的周期执行任务,到底要做些啥
文章导航 Redis源码系列的初衷,是帮助我们更好地理解Redis,更懂Redis,而怎么才能懂,光看是不够的,建议跟着下面的这一篇,把环境搭建起来,后续可以自己阅读源码,或者跟着我这边一起阅读.由于 ...
- get 获取方式练习题及dom基础
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- form表单里的button调用js函数
近来发现一个特别奇怪的问题:在form表单里,button的onclick事件无法调用js函数.代码如下(这段代码放在form标签里): dropUpdateAddress调用的js函数为: 这个时候 ...
- TensorFlow keras 迁移学习
数据的读取 import tensorflow as tf from tensorflow.python import keras from tensorflow.python.keras.prepr ...
- 从"UDF不应有状态" 切入来剖析Flink SQL代码生成
从"UDF不应有状态" 切入来剖析Flink SQL代码生成 目录 从"UDF不应有状态" 切入来剖析Flink SQL代码生成 0x00 摘要 0x01 概述 ...