【问题标题】:Error with scanf() by compiling a C program in Sublime Text 2通过在 Sublime Text 2 中编译 C 程序导致 scanf() 出错
【发布时间】:2015-01-16 01:35:38
【问题描述】:

我终于设法在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()

c build

【问题讨论】:

  • 是我,还是无法知道问题是什么?
  • @iharob 很抱歉,但我要解释的是编译器不希望从键盘输入文本,它会跳转指令并终止执行。
  • @CésarNontol 这根本没有任何意义,编译器不希望输入键盘上的文本,而是编译程序。
  • 发布代码而不是屏幕截图更有用。

标签: c sublimetext2


【解决方案1】:

你不能通过 Sublime Text 控制台向你的程序发送输入。您可以看到构建系统的输出或 python 运行的命令。 构建系统旨在运行不需要与用户交互的编译器等程序。

我建议删除执行.exe 的调用,这意味着删除"&amp;&amp;", "${file_base_name}.exe" 并在Windows 控制台中运行您的程序。在那里它会起作用。

【讨论】:

    【解决方案2】:

    虽然你无法修复 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}'"]
            }
        ]
    }
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-03-22
      • 2013-01-15
      • 1970-01-01
      • 2016-02-04
      • 1970-01-01
      • 2016-09-04
      • 2016-01-10
      • 2012-05-25
      相关资源
      最近更新 更多