2 baidu 24736703 baidu_24736703 于 2016.04.21 15:48 提问

为什么这个c++程序运行到后面运行终止

程序程序源码如下:

#include "stdafx.h"
#include

using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
char firstname[20];
char lastname[20];
char grade;
int age;

cout << "what is your first name? ";
cin.getline(firstname,20);
cout << "what is your last name? ";
cin.getline(lastname,20);
cout << "what letter grade do you deserve? ";
cin >> grade;
cout << "what is your age? ";
cin >> age;

cout << "Name:" << lastname << "," << firstname << endl;
cout << "Grade:" << grade << endl;
cout << "Age:" << age << endl;
return 0;

}

在运行到cin>>age;时,我输入年龄后就直接被终止程序了是为什么,为什么后面的代码运行不了了??求指教

5个回答

caozhy
caozhy   Ds   Rxr 2016.04.21 22:25

在程序最后加上
system("pause");
把程序停下来就看到结果了。
另外,你的输入不能超过19个字符(因为结束符也占用一个字符)

chenqixia
chenqixia   2016.04.21 16:08

是运行了,你可以在return 0 打个断点试试,就会看到输出结果了

chenqixia
chenqixia 回复Kobe___Bryant: breakpoint,就是vs代码前面点一下。。。。
大约 2 年之前 回复
baidu_24736703
baidu_24736703 打个断点是什么意思??求详解
大约 2 年之前 回复
kuangyeren_ai
kuangyeren_ai   2016.04.21 15:59

后面的代码是运行了的,只不过太快,一闪而过啦。
可以在return 0的前面加一个getchar();

xiaochaolovedan
xiaochaolovedan   2016.04.21 16:20

内存溢出的问题,在cin>>age;前面加上这个fflush(stdin);或者c++的刷新缓冲区的方法,

xiaochaolovedan
xiaochaolovedan 不好意思,单词拼写出错,你自己懂那个意思就行了
大约 2 年之前 回复
xiaochaolovedan
xiaochaolovedan 问题解决了吗
大约 2 年之前 回复
xiaochaolovedan
xiaochaolovedan 回复Kobe___Bryant: 前面的内容可能太多了,超过了缓存区的长度,或者是缓存区中还有数据导致下面的输入有问题。
大约 2 年之前 回复
baidu_24736703
baidu_24736703 您好,我是小白,请问这到底是什么原因?能不能解释清楚一点
大约 2 年之前 回复
NK_test
NK_test   Rxr 2016.04.22 00:45

getline会吃掉回车,缓冲区滞留回车,当做数字读入产生错误,前面加上getchar()试试

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
C语言里程序编译无误但运行会弹出程序已停止运行是为什么?
C语言里程序编译无误但运行会弹出程序已停止运行是为什么?原文链接(https://zhidao.baidu.com/question/1178139670043658699.html) 摘要 1. 内存溢出 内存溢出(out of memory)通俗理解就是内存不够,程序所需要的内存远远超出了主机内安装的内存所承受大小,就叫内存溢出。系统会提示内存溢出,有时候会自动关闭软
Linux环境下C程序启动、终止分析
当内核执行C程序时(使用一个exec函数,即创建),在调用main前先调用一个特殊的启动例程。可执行程序文件将此启动例程指定为程序的起始地址——这是由C编译器调用设 置。启动例程从内核取得命令行参数和环境变量值,然后为按上述方式调用main函数做好安排。 当终止一个进程时,有8种方式使进程终止,其中5种为正常终止,它们是: 从main函数返回;调用exit;调用_exit或_Exit
Scanner 调试时程序会结束,而运行时不会结束。
调试的方式不对。计算机运行很快,来一个数据很快就处理结束呢,还未等到下一个数据输入。所以调试的方式,应该按照这个顺序来调。 输入的数据为: jfreu(+敲击Enter键) virtbtr(+敲击Enter键) “”(+敲击Enter键)就会一直阻塞。import java.io.BufferedWriter; import java.io.File; import java.io.File
CTRL+C不能终止程序运行
用freescale的ltib等工具生成了一个根文件系统,但是发现在按下 ctrl-c 不能终止程序。写一个测试程序#include #include void sig_handle(int   sig)  {      if(SIGINT==sig)      {          printf("press again!/n");    }  } int main(void) {    s
python里怎么终止程序的执行?
python里怎么终止程序的执行?   import sys sys.exit(0)     Or you can use: raise SystemExit   If you are using IDLE: just use "quit()"
Java程序结束运行的原因
1.正常运行结束 2.调用了System.exit() 3.发生了异常或错误,程序没有捕获 4.JVM内部错误(由系统导致) 5.程序被操作系统终止(如在任务栏结束程序) 6.JVM被操作系统终止(如在任务栏结束JVM)
这段代码为什么执行到一半就直接退出了?
程序如下,但是执行到“printf("Do you wish to add more numbers(y/n)\n");”就不往下执行了,这是为什么呢?求指点。 #include int main(void) { int a,b,c; char ch; while(1) { printf("Enter values of a and b\n"); scanf("%d%d
Python程序运行中防止意外Ctrl+C按键致程序终止
Python网络爬虫往往需要连续运行很长时间。期间,运行过程中会随时输出一些状态信息,供分析查看。在此过程中,有时会选择所需信息,然后习惯性地点击Ctrl+C进行复制操作,啊哦~~~~ 不妙!对于运行中的Python来说,这也会导致发出退出运行的信号。于是我们就看到如下的画面: KeyboardInterrupt异常!怎么办?如果不想因为一个粗心大意的按键而导致程序中途退出,势必需要对退
matlab 终止正在运行的程序
使用按键 ctrl+c
jq中如何阻止程序的运行
在我们写jq的时候,当数据满足一定的条件时,我们想要阻止程序的运行,并且给出相应的提示,我们可以用简单的方法,return false;就可以实现,下面就为大家举一个实例。 //首先引入jq文件,我用的是tp框架           //首先我们可以为元素绑定一个事件,我这里就以 click 点击为例吧           $('img').click(funct