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

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

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!