首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >暂停执行C代码的exe

暂停执行C代码的exe
EN

Stack Overflow用户
提问于 2015-05-10 10:59:48
回答 3查看 663关注 0票数 1

我在C中开发了一个简单的控制台实用程序,它解析各种文本文件。

IDE -代码块操作系统- windows

我打算分发它的可执行文件。

可执行文件工作正常,但是与从IDE执行时不同的是,执行不会在执行结束时暂停/等待击键。

我尝试使用getchar()/system(“暂停”),但是执行没有暂停。

在结束执行之前,是否有其他方法等待击键,以便用户可以查看输出?

EN

Stack Overflow用户

发布于 2015-05-10 11:14:00

这取决于您的代码的其他部分如何接收来自用户的输入(即从stdin读取)。

如果您的程序没有从用户那里读取任何内容,或者正在使用getchar()读取任何内容,那么getchar()方法将很好地工作。

然而,一个普遍的指导方针是,每个流的输入样式要保持一致。输入样式指的是面向字符(如getchar())、面向行(如fgets())、格式化(如scanf())或未格式化(如fread())。这些函数中的每一个都根据输入执行不同的操作--例如,getchar()将将换行符读入整数值,如果缓冲区足够长,fgets()将在字符串的末尾保留一条换行符,scanf()通常会在遇到换行符时停止,但将换行符留在流中等待下一次读取。

净效果是不同类型的输入将相互作用,并可能产生奇怪的效果(例如,数据被忽略,而不是像您所看到的那样等待输入)。

例如,如果您正在使用scanf(),您可能还应该使用scanf()让您的程序在结束时等待。不是getchar() --因为在实践中,很可能会有一个新行等待读取,所以getchar()会立即返回,您的程序在终止之前不会暂停。

上述情况都有例外(例如,取决于所使用的格式字符串以及用户输入的内容)。但是,经验法则是:在您从stdin中读取的方式上保持一致,用户将不得不非常努力地在终止之前停止您的程序暂停。

当然,一个更简单的选择是从命令行运行程序(例如,CMD.EXE命令shell)。然后,当程序终止时,shell将接管程序,程序输出对用户是可见的,因此您的程序不需要暂停。

票数 3
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30150595

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档