暂停执行 C 代码的 exe

Pause the execution of exe of a C code

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

IDE - 代码块 OS - windows

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

可执行文件工作正常,但与从 IDE 执行时不同,执行结束时不会 pause/wait 击键。

我尝试使用 getchar()/system("pause"),但执行不会在那里暂停。

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

您可以使用

getchar();

twice ,因为最后一个 '\n' 换行符很可能会被你的 getchar() 消耗掉。

或使用

scanf(" %c");

加上额外的 space

在文件末尾。

不要使用 system("pause"),因为它不可移植。 getchar 另一方面应该可以工作。你能 post 一些代码吗?也许键盘缓冲区上有一些东西被你唯一的 getchar 调用消耗了。

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

如果您的程序没有从用户那里读取任何内容,或者正在使用 getchar().

进行读取,getchar() 方法将工作正常

但是,一般准则是每个流的输入风格保持一致。输入的风格是指面向字符的(函数如getchar())、面向行的(如fgets())、格式化的(函数如scanf())或无格式的(如fread() ).这些函数中的每一个都根据输入做不同的事情——例如 getchar() 将读取一个换行符作为整数值,如果缓冲区足够长,fgets() 将在读取的字符串末尾留下一个换行符, scanf() 经常会在遇到换行符时停止,但将换行符留在流中以供接下来读取。

最终效果是不同风格的输入会相互作用,并且会产生奇怪的效果(例如,数据被忽略,而不是像您看到的那样等待输入)。

例如,如果您使用 scanf(),您可能还应该使用 scanf() 让您的程序在最后等待。不是 getchar() - 因为在实践中,很可能有换行符等待读取,所以 getchar() 将立即 return,并且您的程序在终止前不会暂停。

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

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