编译后的 c 脚本仅保持打开状态不到一秒

问题描述 投票:0回答:4

这里是初学者爱好程序员。我习惯在 OSX 中使用 GCC 编译运行 C,但最近不得不切换到 Windows。我正在使用 Microsoft Visual Studio Express 2010 编译我的代码。编译进展顺利,但之后当我尝试运行它时,它只会闪烁打开一毫秒,然后关闭。我该如何解决这个问题?

我尝试过的所有脚本都会出现这种情况,但这里有一个特别的问题,即 K&R 的经典华氏度和摄氏度转换器,它不起作用。 如果这是一个愚蠢的问题,抱歉。两周前刚开始学习C。

 #include <stdio.h>

    main()
   {
     int fahr, celsius;
     int lower, upper, step;
     lower = 0;     
     upper = 300;    
     step = 20;    
     fahr = lower;
     while (fahr <= upper) {
         celsius = 5 * (fahr-32) / 9;
         printf("%d\t%d\n", fahr, celsius);
         fahr = fahr + step;
      }
   }
c windows visual-studio-2010 command-line
4个回答
3
投票

在最后一个括号

getch()
之前放置一个
}
,这需要在程序退出之前按一下按键

我建议这个而不是

ctrl-f5
的唯一原因是它教你另一个C命令:)

[编辑]
让我为您正在做的事情添加更多信息。

main 的正确签名是

int main(int argc, char **argv)
,这是您的程序中应该具有的值(以替换当前存在的单行
main()

您不必对这些变量(argc 和 argv)执行任何操作,您(程序员)可能不会使用它们。 但是,函数名称(main)前面出现

int
意味着它应该返回一个值。 再说一次,你可能不在乎。 然而,将来,您或负责您代码的人会关心的。 这意味着您的
main
函数应该返回一些值,向底层操作系统表明它是成功还是失败(此外,如果您在 shell 脚本中使用程序,则需要使用一些值)。

暂时,在前面提到的

return(0)
之后,一个简单的
getch()
就可以很好地完成工作。
[/编辑]


2
投票

听起来您正在尝试使用 F5 在调试器下运行程序。 成功完成后,调试器将立即退出。 尝试在调试器外部运行,完成后它将暂停以按下按键:Ctrl+F5

注意:术语脚本对于 C 来说并不准确。C 是一种编译语言,因此通常称为程序与脚本。


1
投票

您引用的程序将一系列华氏温度转换为摄氏度,打印结果,然后立即退出。这就是源代码所说的:其中没有任何内容可以使其保持打开状态。

如果您在 Unix 环境中编译和运行,您很可能从(虚拟)终端内的 shell 运行它,当程序完成时,shell 会给出一个新的提示符,但使程序的输出在上面可见它。然而,在 Windows 上,启动程序的标准方法不涉及 shell 或终端窗口,因此程序只是将其输出写入您看不到的地方并退出(或者它打开一个终端窗口,但在它之后立即将其关闭)运行完毕)。

要在 Windows 中查看输出,您可以自己打开一个终端窗口(运行 cmd.exe)并从那里启动程序,或者您可以在末尾添加

getch()
调用,使程序在按下之前等待按键退出。


0
投票

您可以直接从命令行而不是从 IDE 运行可执行文件,或者在 main() 末尾调用一些输入以保持窗口打开。

© www.soinside.com 2019 - 2024. All rights reserved.