从SciTE运行时控制台程序无法正确执行
问题描述:
我正在通过一门普通的编程课程同时学习C语言。课程设置建议Windows用户使用SciTE,所以我做了。可能因为我有Windows 8,我必须编辑SciTE cpp.properties文件才能运行示例程序。这是属性文件的make/go部分的样子:从SciTE运行时控制台程序无法正确执行
ccopts=-pedantic -Os
cc=g++ $(FileNameExt) -o $(FileName).exe
ccc=gcc $(FileNameExt) -o $(FileName).exe
make.command=make
command.compile.*.c=$(ccc) -std=c99
command.build.*.c=$(make.command)
command.build.*.h=$(make.command)
command.clean.*.c=$(make.command) clean
command.clean.*.h=$(make.command) clean
command.go.*.c=$(FileName)
我的问题是我无法让这个程序在SciTE中执行。它在PowerShell/cmd中工作正常,但如果我尝试在SciTE中执行它,我不会得到第一个打印输出,并且提供输入什么也不做。即使我停止执行,它也永远不会结束。我必须进入任务管理器并结束程序。我之前遇到过这个问题,但那是因为我打错了。我不知道我在这里拼写错误:
#include <stdio.h>
#include <conio.h>
int main(void)
{
int num1;
int num2;
printf("Enter 2 numbers\n");
scanf("%d%d", &num1, &num2);
if(num1 == num2) {
printf("they are equal\n");
}
if(num1 < num2) {
printf("%d is less than %d\n", num1, num2);
}
if(num1 > num2) {
printf("%d is greater than %d\n", num1, num2);
}
getch();
}
答
赛特的输出窗口是不是正规的控制台你所期望的 - 你不能在赛特的输出窗口要求用户输入。
但是,你也许可以利用parameters并稍微改变你的脚本接受参数,而不是用户输入。
另一种选择是使用其他则默认为subsystem go命令:
command.compile.*.c=gcc $(FileNameExt) -o $(FileName).exe
command.go.*.c="$(FileDir)\$(FileName).exe"
command.go.subsystem.*.c=2
你可以,如果你想尝试它在你cpp.properties
末粘贴此块。甚至更多,如果你想的是在飞行和执行编译一个Go命令,添加此行上面块:
command.go.needs.*.c=gcc $(FileNameExt) -o $(FileName).exe
附注:您可以随时终止正在运行的赛特计划与Ctrl+Break
或“工具>停止执行“菜单命令。