初学者爱好程序员在这里。我习惯在使用GCC编译OSX中运行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;
}
}
答案 0 :(得分:3)
在最后一个大括号getch()
之前加}
,这需要在程序退出前按键
我建议这个而不是ctrl-f5
的唯一原因是它教你另一个C命令:)
[编辑]
让我为你正在做的事情添加更多信息。
main的正确签名是int main(int argc, char **argv)
,这是您应该在程序中使用的值(替换当前存在的单行main()
。
您不必对这些变量(argc&amp; argv)执行任何操作,程序员可能不会使用它们。但是,函数名称(main)上存在前面的int
意味着它应该返回一个值。再说一次,你可能不在乎。但是,将来,您或负责您的代码的人员会关心。这意味着你的main
函数应该返回一些值,表示它对底层操作系统的成功或失败(也就是说,如果你在shell脚本中使用你的程序就应该使用它)。
目前,在上述return(0)
之后,一个简单的getch()
可以很好地完成工作。
[/编辑]
答案 1 :(得分:2)
听起来你正试图用 F5 在调试器下运行程序。成功完成后,调试器将立即退出。尝试在调试器外部运行,它将在完成后暂停按键: Ctrl + F5
注意:术语脚本对于C来说并不准确.C是一种编译语言,因此通常称为程序与脚本。
答案 2 :(得分:1)
您引用的程序会将华氏温度范围转换为摄氏温度,打印结果并立即退出。这就是源代码所说的内容:它没有任何内容可以让它保持开放状态。
如果你在Unix环境中编译和运行,你最有可能在shell(在一个(虚拟)终端内)运行它,当程序完成时,shell会给你一个新的提示,但是会保留程序的输出它上方可见。但是,在Windows上,启动程序的标准方法不涉及shell或终端窗口,因此程序只是将其输出写入您无法看到和退出的位置(或者它打开一个终端窗口,但在它之后立即关闭它完成运行)。
要在Windows中查看输出,您可以自己打开终端窗口(运行cmd.exe)并从那里启动程序,或者您可以在最后添加getch()
调用以使程序等待在退出之前按键。
答案 3 :(得分:0)
您可以直接从命令行运行可执行文件,而不是从IDE中运行,或者在main()的末尾调用一些输入以保持窗口打开。