Консольная программа не работает правильно при запуске из SciTE

Я изучаю C из учебника одновременно с общим курсом программирования. В программе курса пользователям Windows рекомендовалось использовать SciTE, что я и сделал. Возможно, из-за того, что у меня Windows 8, мне пришлось отредактировать файл SciTE cpp.properties, чтобы запустить примеры программ. Вот как выглядит раздел make/go файла свойств:

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();
}

person Tranquilled    schedule 10.09.2014    source источник


Ответы (1)


Панель вывода SciTE не является обычной консолью, как можно было бы ожидать — вы не можете запрашивать ввод данных пользователем в панели вывода SciTE.

Однако вы, возможно, можете использовать параметры и немного изменить свой сценарий, чтобы он принимал параметры вместо пользовательского ввода. .

Другим вариантом является использование другой подсистемы по умолчанию для команды 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

Примечание: Вы всегда можете прервать запущенную программу SciTE с помощью Ctrl+Break или с помощью команды меню «Инструменты > Остановить выполнение».

person theta    schedule 17.09.2014