标题:我是c++新手,下面C++代码运行时,为什么会闪退? 我用的是vs2017编译器
只看楼主
yq1557
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2018-2-24
结帖率:100%
已结贴  问题点数:5 回复次数:1 
我是c++新手,下面C++代码运行时,为什么会闪退? 我用的是vs2017编译器
#include <iostream>
int main()
{
    using namespace std;
    char ch;
    int count = 0;      
    cout << "Enter characters; enter # to quit:\n";
    cin >> ch;         
    while (ch != '#')  
    {
        cout << ch;     
        ++count;      
        cin >> ch;      
    }
    cout << endl << count << " characters read\n";
    cin.get();
    return 0;
}
为什么当我输入“hello world how are you#”可以正常运行显示;
但当我这样输入时却总是闪退“hello world#how are you”;
#后边有字符或空格闪退;
教科书上说这样输入是可以的,程序在遇到#字符将结束对输入的处理;
但我的总是闪退,怎么回事?

[此贴子已经被作者于2018-2-24 10:46编辑过]

搜索更多相关主题的帖子: c++ 运行 count cin 输入 
2018-02-24 10:17
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:5 
还是先回答你的问题吧,如果#之后没有输入,那么cin.get()就一直在等待你输入,程序傻等在这里;如果#之后有输入,那cin.get()就执行完毕了,优雅地退出(也就是你所谓的“闪退”)。

-------------------

首先呐,用“cin.get()”等来留住控制台,是外行们的恶心做法。程序运行完毕,就应该即时退出(也就是你所谓的“闪退”)。

以windows为例,如果你想看程序的屏幕输出,那么应该执行 cmd.exe /k a.exe,程序运行结束后控制台还在。或者先打开cmd.exe,然后在cmd.exe中运行a.exe。
如果你不想看屏幕输出,而只是运行一下程序,那么应该执行 cmd.exe /c a.exe。或者在文件管理器中双击a.exe。

以vc++为例,如果你只是想程序结果,按CTRL+F5,程序运行完毕后控制台还在,再按任意键退出
如果你是想调试,按F5,程序运行后控制台自动退出。

其次说代码,两处 cin >> ch; 你不觉得多余吗?循环中使用的ch你定义在外部不觉得污染环境吗?……
程序代码:
#include <iostream>
using namespace std;

int main( void )
{
    size_t count = 0;

    cout << "Enter characters; enter # to quit:\n";
    for( char ch; cin>>ch && ch!='#'; ++count )
        cout << ch;

    cout << '\n' << count << " characters read\n";
    return 0;
}
2018-02-24 12:02



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-484834-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.591561 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved