无法理解的代码

doublekill_ 2015-09-01 08:41:19
我编好了一个源代码然后他也生成了一个.exe格式的文件。首先它是正确的,但是我无法直接打开.exe文件,很不解!!!!只能通过再打开源代码进行运行。为什么啊????急急急……谢谢
...全文
411 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2015-09-02
  • 打赏
  • 举报
回复
开始,运行,cmd,确定。
doublekill_ 2015-09-02
  • 打赏
  • 举报
回复
我认为六楼说的很有道理,跟我猜的差不多。但我天资愚笨,希望可以通俗的给我讲一下(有个例子最好)。九楼说的我用getchar()试了,确实可以直接打开了,当我输入所需的数据后点击enter运行时又直接跳出来了(不运行)
doublekill_ 2015-09-02
  • 打赏
  • 举报
回复
对就是闪退。
doublekill_ 2015-09-02
  • 打赏
  • 举报
回复
不好意思我不会用cmd窗口。四楼说的我试了一下编译的时候他给出了这么一段话‘system' is not declared in this scope,好像是不能识别吧。可能我表述的不是太清楚吧,我再说一下我的问题!!我想知道为什么在我程序正确的情况下不能直接运行应用程序,只能通过打开源代码运行??(我想听到原因、解释、思想……而不是方法、改变、其他途径打开……)。我编写的代码都是这样的情况。应该不是代码的问题。我是新手,有很多不懂,希望大家多多支持。谢谢。(想截个图给你们看看但是这图片一直显示在上传中)
Haunt_ 2015-09-02
  • 打赏
  • 举报
回复
如果是打开闪退的话,main结束前加getchar()或者system("pause")
freepenix 2015-09-02
  • 打赏
  • 举报
回复
如果是系统限制,杀毒软件拦截,防火墙什么的原因的话,报错信息就比较明显的
freepenix 2015-09-02
  • 打赏
  • 举报
回复
编译器生成的程序,并没有经过封装,所以并不是一个放到哪里都能用的程序
freepenix 2015-09-02
  • 打赏
  • 举报
回复
你编译完,编译器是知道你的程序所需要的库在哪里的,但是你直接运行程序时,需要系统知道你这个程序需要库在哪里,(一般默认是当前文件夹下),当然,所需库和程序不在同一文件夹的话系统就不知道了 所以,你把程序放到用到库的文件夹里的话,就可以了
赵4老师 2015-09-02
  • 打赏
  • 举报
回复
在cmd窗口中输入以下命令: cd /d 你的exe文件所在盘符和目录 你的exe文件名.exe 如果还是不能运行你的exe文件,关闭UAC、防火墙、杀毒软件、……
doublekill_ 2015-09-02
  • 打赏
  • 举报
回复
我刚刚在网上又找了一下封装的知识并用到了我写的程序里,确实是这方面的问题。解决问题的答案就是在main函数结束之前加两个getchar(); 然后就可以直接运行。exe文件了,很感谢大家的帮助(不管是有用的还是无用但有心的解答)。以后有不会的还请大家多多指教。
doublekill_ 2015-09-02
  • 打赏
  • 举报
回复
恩。好的,关于封装这一方面我不是太了解,有谁可以推荐一些书给我看看(最好是pdf格式的)
freepenix 2015-09-02
  • 打赏
  • 举报
回复
我试了你的程序,我这边能运行,拿到哪里都可以,,,
freepenix 2015-09-02
  • 打赏
  • 举报
回复
刚看到你这个图,感觉并没有什么需要封装的文件,把中文都换成英文试试
freepenix 2015-09-02
  • 打赏
  • 举报
回复
引用 16 楼 doublekill_ 的回复:
请大家解答我的疑惑(就是我问什么你答什么而不是给我又引入到另一个情景中),请仔细看我的问题好吧。谢谢(例子就是像六楼那样回答,但是他讲的也不是太清晰,所以希望大家集思广益)。
打个比方,你调用了一个系统函数printf(只是打个比方),这个函数你是直接拿来用的,而它的代码就在库文件里面,你用了这个函数,就需要在运行时,能够找到这个库,确切说是能找到这些调用了的代码,让你的程序能够执行下去。 你用编译器去运行时,编译器帮你做好了找到这些库文件之类的工作,所以可以执行;但是当你直接运行exe时候,这时运行环境是win32控制台,它并不会像编译器做的那么多,它只会去它自己知道的地方去找文件,而没有找到的话,就不能运行了 真的不知道再怎么细说了,, 你想运行exe是要封装后才能做到,不明白的话也不用刻意去纠结,等你慢慢了解了就会了,非要做到,就去看看程序是怎么封装的吧
jyhk2014 2015-09-02
  • 打赏
  • 举报
回复
你确定scanf真的停下来等你了?用每一个函数之前先确定这个函数的用法。
jyhk2014 2015-09-02
  • 打赏
  • 举报
回复
另外,6楼应该是最不靠谱的回答了。
doublekill_ 2015-09-02
  • 打赏
  • 举报
回复
请大家解答我的疑惑(就是我问什么你答什么而不是给我又引入到另一个情景中),请仔细看我的问题好吧。谢谢(例子就是像六楼那样回答,但是他讲的也不是太清晰,所以希望大家集思广益)。
doublekill_ 2015-09-02
  • 打赏
  • 举报
回复
LubinLew 2015-09-02
  • 打赏
  • 举报
回复
因为你建的是win32控制台项目
二班的码农 2015-09-01
  • 打赏
  • 举报
回复
在主函数return前加 system("pause");试试
加载更多回复(3)

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧