暂停执行C代码的exe

暂停执行C代码的exe,c,deployment,exe,C,Deployment,Exe,我用C语言开发了一个简单的控制台实用程序,可以解析各种文本文件 IDE代码块 操作系统-windows 我打算分发它的可执行文件 可执行文件工作正常,但与从IDE执行时不同,执行不会在执行结束时暂停/等待击键 我尝试使用getchar()/system(“pause”),但执行没有在那里暂停 是否有其他方法在结束执行之前等待击键,以便用户可以查看输出?您可以使用 getchar() 两次,因为最后一个“\n”换行符很可能会被getchar()使用 或使用 scanf(“%c”) 用那额外的空间

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

IDE代码块 操作系统-windows

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

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

我尝试使用getchar()/system(“pause”),但执行没有在那里暂停

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

您可以使用

getchar()

两次,因为最后一个“\n”换行符很可能会被getchar()使用

或使用

scanf(“%c”)

用那额外的空间

在文件末尾。

您可以使用

getchar()

两次,因为最后一个“\n”换行符很可能会被getchar()使用

或使用

scanf(“%c”)

用那额外的空间


在文件末尾。

不要使用
系统(“暂停”)
,因为它不可移植<另一方面,code>getchar应该可以工作。你能发一些代码吗?也许键盘缓冲区中有什么东西正在被你的一个且唯一的
getchar
调用使用。

不要使用
系统(“暂停”)
,因为它不可移植<另一方面,code>getchar应该可以工作。你能发一些代码吗?可能键盘缓冲区中有一些东西被您的一个且唯一的
getchar
调用占用。

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

如果您的程序没有从用户处读取任何内容,或者正在使用
getchar()
进行读取,那么
getchar()方法将可以正常工作

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

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

例如,如果使用的是
scanf()
,则可能还应该使用
scanf()
使程序在最后等待。不是
getchar()
——因为实际上可能有一个换行等待读取,所以
getchar()
将立即返回,并且您的程序在终止之前不会暂停

上述情况也有例外(例如,取决于使用的格式字符串以及用户输入的内容)。但作为一条经验法则:从
stdin
中读取数据的方式要保持一致,用户必须非常努力地停止程序暂停,然后才能终止


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

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

如果您的程序没有从用户处读取任何内容,或者正在使用
getchar()
进行读取,那么
getchar()方法将可以正常工作

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

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

例如,如果使用的是
scanf()
,则可能还应该使用
scanf()
使程序在最后等待。不是
getchar()
——因为实际上可能有一个换行等待读取,所以
getchar()
将立即返回,并且您的程序在终止之前不会暂停

上述情况也有例外(例如,取决于使用的格式字符串以及用户输入的内容)。但作为一条经验法则:从
stdin
中读取数据的方式要保持一致,用户必须非常努力地停止程序暂停,然后才能终止


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

谢谢你,Namit,我像你说的那样尝试了两次getchar,但按键没有停止执行。我尝试了你的建议,如下所示
int main(){node*temp1,*temp2;char script[255],ch;char*dev;FILE*fp;//文件读取和解析逻辑//没有来自u