标题:请教:生成的exe文件一闪而过,该怎么解决?
只看楼主
hap487
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2008-10-15
得分:0 
那么怎么回事??我遇到过这样的问题啊,可是我的解决方法是更改.exe文件的属性啊!
在属性有这一项啊!!!可以停留在结果页面!!!
2008-10-20 11:18
欧阳君雅
Rank: 1
等 级:新手上路
帖 子:71
专家分:0
注 册:2008-9-29
得分:0 
我以前看过一个c++的视频课件,里面第一节课就讲了怎样更改exe文件属性来停留在结果页面,但是我当时没注意听,也没记下来,哎,悔。。。。。
2008-10-20 11:38
欧阳君雅
Rank: 1
等 级:新手上路
帖 子:71
专家分:0
注 册:2008-9-29
得分:0 
楼上各位讲的方法我都试过了,还是一样,我甚至在程序末尾加上了这么一段:

printf("do you want to continue(y/n):");
choice=getch();
switch(choice)
{
    case 'y':goto loop;break;
    case 'n';exit(0);
}

照样一闪而过。
2008-10-20 11:53
StarWing83
Rank: 8Rank: 8
来 自:仙女座大星云
等 级:贵宾
威 望:19
帖 子:3951
专家分:748
注 册:2007-11-16
得分:0 
至少有种方法你没有试过:在控制台运行,那样是根本不可能一闪而过的。
还有,可以system("pause");貌似楼上都未提到。

专心编程………
飞燕算法初级群:3996098
我的Blog
2008-10-20 11:56
欧阳君雅
Rank: 1
等 级:新手上路
帖 子:71
专家分:0
注 册:2008-9-29
得分:0 
system("pause");调用dos指令我用了,一闪而过,在控制台也算是一闪而过吧,因为虽然程序结果摆在哪里,但是它根本不会显示do you want to continue?来让你选择,而是直接跳转到dos命令行。
2008-10-20 12:08
StarWing83
Rank: 8Rank: 8
来 自:仙女座大星云
等 级:贵宾
威 望:19
帖 子:3951
专家分:748
注 册:2007-11-16
得分:0 
那么只有一种可能:你的程序中途崩溃了……源代码贴出来看。

专心编程………
飞燕算法初级群:3996098
我的Blog
2008-10-20 12:26
欧阳君雅
Rank: 1
等 级:新手上路
帖 子:71
专家分:0
注 册:2008-9-29
得分:0 
#include"stdio.h"
#include"stdlib.h"
void main()
{
        int *p,*head;
    int n,i,j,temp;
    long SUM=0;
    printf("please input the data of fruit's heap:");
    scanf("%d",&n);
    p=(int *)calloc(2,n);
    head=p;
    printf("please input every heap'weight:");
    for(i=0;i<n;i++)
        scanf("%d",p+i);
    for(i=1;i<n;i++)
        for(j=0;j<n-i;j++)
        {
            if(*(p+j)>*(p+1+j))
            {
                temp=*(p+j);
                *(p+j)=*(p+j+1);
                *(p+j+1)=temp;
            }
            else
                continue;
        }

    for(i=n;i>=1;i--)
        SUM+=(*p++)*i;//就用这一个循环解决问题
    SUM-=*head;
    printf("the gross of duoduo'work is:%ld\n\n\n",SUM);
}
2008-10-20 12:45
SLYAR
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2008-9-4
得分:0 
system("pause");
2008-10-20 12:55
欧阳君雅
Rank: 1
等 级:新手上路
帖 子:71
专家分:0
注 册:2008-9-29
得分:0 
如何通过修改exe文件属性来解决?
2008-10-20 12:56
欧阳君雅
Rank: 1
等 级:新手上路
帖 子:71
专家分:0
注 册:2008-9-29
得分:0 
这是我在网上找到的,大家看看吧。。。
双击C/C++的debug下*.exe一闪而过的解决方案(初学者适用版)  
这个问题困扰了我一段时间,网上看了些东西,最后算是差不多知道了。但回头来看我认为那些写的并不是很清楚,让一个刚学习C,C++的人来说可能不是很易接受。所以自己就整理了这么一篇。

Windows 环境下,直接双击C 或 C++(简称 C/C++)程序debug下*.exe,会出现程序一闪而过或者程序接收了输入后直接退出的现象,导致看不到运行结果。原因是由于程序运行结束后,自动关闭了运行窗口。

网上有不少文章给出了以下三种方案,在此我换种方式做一总结:
1.我个人认为最最简结的一种:
在您想要暂停的地方加上 system("pause"); 就可以使 C/C++ 程序暂停。//我对“想要暂停的地方”的理解差不多就是程序的最后,即return 0;之前。一般都会是这样子的。
{不过,这个办法奏效的前提是系统中必须存在 pause 这个命令。此外,还需要包含标准头文件 stdlib.h(对于 C)或者 cstdlib(对于 C++)。(自互联网)}
对于上面括号里面的话我想做点纠正。一般情况下pause在系统里都会是存在的,这一点也就根本不用考虑。还有经我在vs2005里测试,我除 iostream 外并没有用其它任何头文件。

2.这一种方法我认为是在上面方法的确行不通时可以再考虑的方法

c++在您想要暂停的地方(完全同上述的地方)加上

           cin.clear(); // 清除以前流的标记,如果这里没有 clear,那么下面的输入就被忽略了,因为cin标志未清除
            cin.ignore( numeric_limits<streamsize>::max(), '\n' ); // 这一句就是把回车(包括回车)之前的所以字符从输入缓冲(流)中清除出去。
            cin.get(); // 等待用户输入回车,为什么不一闪而过的关键原由

上面三行;此外还需要包含C++标准头文件 limits

(c则为
            while ( (c = getchar()) != '\n' && c != EOF ) ; // 清空输入流
            clearerr(stdin); // 清除流的错误标记
            getchar(); // 等待用户输入回车
此三行,要添加的头文件为stdio.h;这三行在C++里也可以,只是要添加的头文件为cstdio)


3.这一种是打死我也不会用的一种方法
从DOS下去启动那个 *.exe ,具体方法有人感兴趣,用关键词“避免 C/C++ 程序一闪而过的方法”搜索,它会告诉你如何做的。在那里,这方法竟是头一条!


最后我附一个例子吧,我觉得比“避免 C/C++ 程序一闪而过的方法”更容易让初学者接受的例子。就这一个肯定足够了。

           #include <iostream>
          #include <limits>        
          using namespace std;

         /*-----------------------------------------------------------------------------------------------------------------------
         | 作者:路人乙 sutieee@   http://hi.baidu.com/sutiee      C/C++ 标准编程
         |
         | 功能:                  演示双击C/C++的debug下*.exe一闪而过的解决方案
          ------------------------------------------------------------------------------------------------------------------------*/  

        int main()
        {
            int a,b;
            int sum;

           
            cout << "Please enter two number: "<<endl;
            cin >> a>>b;
            sum=a+b;
            cout<<"The sum is "<<sum<<endl;
            
            cin.clear(); // 如果这里没有 clear,那么下面的输入就被忽略了,因为cin标志未清除
            cin.ignore( numeric_limits<streamsize>::max(), '\n' ); // 清空输入流
            cin.get(); // 等待用户输入回车

            return 0;
        }
 

 
 原文地址 http://hi.baidu.com/sutiee/blog/item/301d68d9ba04f32810df9bcc.html  
 发表于: 2008-05-17,修改于: 2008-05-17 21:04 已浏览400次,有评论0条 推荐 投诉
2008-10-20 13:05



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




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

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