我在C中开发了一个简单的控制台实用程序,它解析各种文本文件。
IDE -代码块操作系统- windows
我打算分发它的可执行文件。
可执行文件工作正常,但是与从IDE执行时不同的是,执行不会在执行结束时暂停/等待击键。
我尝试使用getchar()/system(“暂停”),但是执行没有暂停。
在结束执行之前,是否有其他方法等待击键,以便用户可以查看输出?
发布于 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将接管程序,程序输出对用户是可见的,因此您的程序不需要暂停。
https://stackoverflow.com/questions/30150595
复制相似问题