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

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

因为我的电脑是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)终止问题的更多相关文章

  1. while(scanf("%d",&n)!=EOF)与while(cin>>n)

    我们知道scanf函数是C语言里面的,其返回值是,被输入函数成功赋值的变量个数.针对于int  counts = scanf("%d",&n);来说如果赋值成功那么其返回值 ...

  2. 7-16 一元多项式求导(20 分)(有关while(scanf("%d",&n)!=EOF))

    7-16 一元多项式求导(20 分) 设计函数求一元多项式的导数. 输入格式: 以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过1000的整数).数字间以空格分隔. 输出格式: 以与输入相同 ...

  3. while(scanf("%d",&n)!=EOF)

    scanf的返回值由后面的参数决定 scanf("%d%d", &a, &b); 如果a和b都被成功读入,那么scanf的返回值就是2 如果只有a被成功读入,返回值 ...

  4. c的scanf为什么比c++的cin快

    很早就知道,c的scanf(printf)比c++的快.刷题时尤其明显,在这上面超时是常有的事儿. 但,这是别人告诉我的,c快. 为什么快? 从网上借鉴一个例子做个简单测试: 1.cpp     // ...

  5. POJ 1287 Networking (最小生成树)

    Networking 题目链接: http://acm.hust.edu.cn/vjudge/contest/124434#problem/B Description You are assigned ...

  6. 2018 ACM-ICPC 中国大学生程序设计竞赛暨丝绸之路程序设计竞赛

    三道大水题,其它题都不会做,真是尴尬和无奈啊…… 有想法,但是解决不了,感觉个人不会一些基本解法,终究还是个人学习的内容太少了 B. Goldbach /* 数值较小,<2^63,分解的两个素数 ...

  7. poj1584 A round peg in a ground hole【计算几何】

    含[判断凸包],[判断点在多边形内],[判断圆在多边形内]模板  凸包:即凸多边形 用不严谨的话来讲,给定二维平面上的点集,凸包就是将最外层的点连接起来构成的凸多边形,它能包含点集中所有的点. The ...

  8. 1001 Duplicate Pair

    1.题目戳这里 2.代码: #include<stdio.h> #include<string.h> int main() { int n; while(scanf(" ...

  9. GCD - Extreme(欧拉函数变形)

    题目链接:https://vjudge.net/problem/UVA-11426 题目大意: 给出整数n∈[2,4000000],求解∑gcd(i,j),其中(i,j)满足1≤i<j≤n. 的 ...

随机推荐

  1. developerWorks 中文社区

    https://www.ibm.com/developerworks/community/groups/service/html/communityview?communityUuid=3302cc3 ...

  2. 正则表达式(JS表格简要总结)

    1. JS中正则表达式定义 JavaScript 中的正则表达式用 RegExp 对象表示. JS中定义正则表达式的两种方法: 方法 示例 RegExp 对象 var pattern = new Re ...

  3. vueCli 运行报错

    error 如下: npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! shopping@0.1.0 serve: `vue-cli-service ...

  4. 解决从服务器获取的数组是 __NSCFConstantString以及""没有空格字符串的问题

    AJ分享,必须精品 问题 项目遇到了个bug,从服务器获取到的数据是这样的 { status = 1, data = [ { uid = 161, type = 2, id = 79, addtime ...

  5. threejs 鼠标移动控制模型旋转

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...

  6. 把川普射上太阳—如何用python制作小游戏

    1.准备 开始之前,你要确保Python和pip已经成功安装在电脑上噢,如果没有,请访问这篇文章:超详细Python安装指南 进行安装. Windows环境下打开Cmd(开始—运行—CMD),苹果系统 ...

  7. 移动硬盘临时文件太多怎么办,python黑科技帮你解决

    前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: 星安果 PS:如果想了解更多关于python的应用,可以私信我,或者 ...

  8. PHP Curl 请求https 60错误解决办法

      curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); 

  9. 前后端分离下用jwt做用户认证

    0 前后端分离下的用户信息认证 前端使用Vue+axios,后端使用SpringBoot+SpringSecurity. 为了解决http无状态的问题,我采用jwt(json web token)保存 ...

  10. IN612 IN612L蓝牙5.0 SoC芯片替换NRF52832/NRF52840

    IN612L是美国公司INPLAY的SOC产品系列之一,具有多模协同2.4G无线协议栈,支持2.4G私有协议栈以及蓝牙5.0全协议栈的SOC芯片.如2mbps高数据速率模式,125kbps/500kb ...