首页 文章

在sublime 3控制台上输出交互式程序

提问于
浏览
1

我正在学习使用sublime3文本编辑器编写C程序,我有两个不同的sublime构建它 . 这个构建在CMD控制台上输出它的执行;

> {
"cmd": ["gcc", "$file_name", "-o", "${file_base_name}.exe", "&&", "start", "cmd", "/k",  "$file_base_name"],
"selector": "source.c",
"working_dir": "${file_path}",
"shell": true
}

而另一个构建在sublime控制台上输出它的执行

> {
"cmd": ["gcc", "$file_name", "-o", "$file_base_name"],
"selector": "source.c",
"working_dir": "${file_path}",


"variants":
    [
        {
            "name": "Run",
            "cmd": ["gcc","${file}", "-o", "$file_base_name", "&&", "$file_path/$file_base_name"],
            "shell":true
        }
    ]
}

我更喜欢第二个构建,但只有当你使用它来运行非交互式程序,例如 "Hello world" 程序时它才有用,当我用它来运行这样一个简单的交互式程序时,它会给我错误信息:

#include <stdio.h>
#include <float.h>


// variable declaration;

int main()
{   
    float a,b,sum;

    printf("Enter value of a\n");
    // for float u use "f" instead of d
    scanf("%f", &a);
    printf("Enter value of b\n");   
    scanf("%f",&b);
    sum=a+b;
    printf("The sum of %f and %f = %f\n",a,b,sum);

    return 0;
}

错误信息:

c:/ mingw / bin /../ lib / gcc / mingw32 / 5.3.0 /../../../../ mingw32 / bin / ld.exe:无法打开输出文件add.exe:权限否认collect2.exe:错误:ld返回1退出状态[完成0.3s]

我想知道我是否可以在sublime控制台上执行交互式程序,或者我需要对我的sublime构建做一些事情 .

1 回答

  • 0

    简短版本:不,您无法在Sublime中运行交互式程序(并与之交互) .

    来自链接器的错误消息告诉您它要创建/修改文件 addition.exe 但是不允许这样做,因为操作系统(在这种情况下是windows)告诉它它不能 .

    其根本原因是Windows不允许您删除/修改当前正在使用的文件,在这种情况下,它意味着它现在正在运行 .

    要找到问题的结点,就不可能直接在sublime中运行交互式程序;或者更确切地说,您可以运行此类程序,但控制台中的输入与您正在运行的程序之间没有任何关联 .

    这意味着当你运行程序时,你无法与它交互,但它仍然在那里等着你输入一些东西 . 然后,当您修改代码并尝试再次构建并运行它时,您会收到此处显示的错误,因为可执行文件仍在运行且无法修改 . 在这种情况下,您可以取消构建以停止正在运行的程序 .

    为了运行这样的程序,你需要在Sublime之外运行它,以便你可以与它进行交互(或者使用为你做这个的构建系统,比如你的第一个例子) .

相关问题