通过在Sublime Text 2中编译C程序来解决scanf()错误

时间:2015-01-16 01:35:38

标签: c sublimetext2

我终于设法在Sublime Text 2中为C配置编译器。在int main()函数中,printf()没有问题,但编译器使用时出现问题scanf()。它不允许键盘输入和跳转指令。

有C:

的构建代码
{
    "cmd": ["gcc", "-Wall", "-ansi", "-pedantic-errors", "$file_name", "-o", "${file_base_name}.exe", "&&", "${file_base_name}.exe"],
    "selector": "source.c",
    "shell": true,
    "working_dir": "$file_path"
}

有C代码:

#include <stdio.h>

int main() {

    int num, cube;

    printf("Enter a number for know the cube: ");
    scanf("%d", &num);

    cube = num * num * num;

    printf("\nThe cube %d is %d.\n\n", num, cube);

    return 0;
}

下面的截图:

error in scanf()

error in scanf()

c build

3 个答案:

答案 0 :(得分:1)

您无法通过Sublime Text控制台向程序发送输入。你可以看到python运行的构建系统或命令的输出。 构建系统打算运行诸如不需要与用户交互的编译器之类的程序。

我建议删除执行.exe的调用,即删除"&&", "${file_base_name}.exe"并在Windows控制台中运行程序。它会起作用。

答案 1 :(得分:0)

虽然你无法修复sublime,但你可以调整你的C.sublime-build文件,让它打开一个终端窗口并运行程序。

这是我的调整,启动一个新的终端窗口,以便您可以正确使用sublime作为完整的IDE进行简单的C开发。

{
    "cmd": ["gcc", "${file}", "-o", "${file_path}/${file_base_name}"],
    "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
    "working_dir": "${file_path}",
    "selector": "source.c",

    "variants":
    [
        {
            "name": "Run",
            "cmd": ["bash", "-c", "gcc '${file}' -o '${file_path}/${file_base_name}' && open -a Terminal '${file_path}/${file_base_name}'"]
        }
    ]
}

我确信有更好的方法来启动终端窗口,但它确实有效。如果有人有改进建议,请随时评论,我会调整。

答案 2 :(得分:0)

我知道这个问题是前一段时间提出的。但是我非常有同样的问题,所以在这里我的帮助=)

{
"shell_cmd" : "clang $file_name -o ${file_base_name}",
"working_dir" : "$file_path",
"variants":
  [
    {
      "name": "Run",
         "shell_cmd": "clang $file_name -o ${file_base_name} && open -a Terminal.app ${file_path}/${file_base_name}"
    }
  ]
}

您必须创建一个新的构建系统(“工具”>“构建系统”>“新构建系统”),它将打开终端并编译并运行代码