项目场景
最近把电脑上的 SublimeText 编辑器更新到最新版了,在编译处理C或C++语言程序时,发现只要是包含 scanf
或 cin
等需要我们手动输入的程序,编译是没问题的,但是在 SublimeText 里运行会出现无法从命令行输入的情况
,在外部运行可执行程序是没问题的。
解决方案
自己重新创建一个C的编译器:打开SublimeText → Tools → Build System → New Build System
考虑到篇幅问题C++的我放在另一篇博客了:Sublime Text编译运行C++语言程序出现无法输入解决办法(Windows、Linux、MacOS均适用)
Windows系统
Windows系统写入如下内容到文件内:
{
"windows": {
"cmd": ["gcc", "-std=c11", "${file}", "-o", "${file_base_name}.exe"],
},
"cmd": ["gcc", "-std=c11", "${file}", "-o", "${file_base_name}"],
"file_regex": "^(.*)\\(([0-9]+),([0-9]+)\\) (Error|Fatal): (.*)$",
"working_dir": "${file_path}",
"selector": "source.c",
"variants": [
{
"name": "Run",
"shell": true,
"windows": {
"shell_cmd" : "start cmd /c \"\"${file_base_name}.exe\" & echo. & pause\""
}
},
{
"name": "Build and Run",
"shell": true,
"windows": {
"shell_cmd": "gcc -std=c11 \"${file}\" -o \"${file_base_name}.exe\" && start cmd /c \"\"${file_base_name}.exe\" & echo. & pause\""
},
}
]
}
MacOS系统
MacOS系统写入如下内容:
{
"cmd": ["gcc", "-std=c11", "${file}", "-o", "${file_base_name}"],
"file_regex": "^(.*)\\(([0-9]+),([0-9]+)\\) (Error|Fatal): (.*)$",
"working_dir": "${file_path}",
"selector": "source.c",
"osx": {
"path": "/usr/local/bin:/usr/bin:/bin:${path}",
"cmd": ["clang", "-std=c11", "${file}", "-o", "${file_base_name}"],
},
"variants": [
{
"name": "Run",
"shell": true,
"osx": {
"shell_cmd": "echo 'cd \"${file_path}/\"' > '/tmp/${file_base_name}' && echo './\"${file_base_name}\"' >> '/tmp/${file_base_name}' && echo read >> '/tmp/${file_base_name}' && chmod +x '/tmp/${file_base_name}' && open -a Terminal.app '/tmp/${file_base_name}'"
},
},
{
"name": "Build and Run",
"shell": true,
"osx": {
"shell_cmd": "clang -std=c11 '${file}' -o '${file_base_name}' && echo 'cd \"${file_path}/\"' > '/tmp/${file_base_name}' && echo './\"${file_base_name}\"' >> '/tmp/${file_base_name}' && echo read >> '/tmp/${file_base_name}' && chmod +x '/tmp/${file_base_name}' && open -a Terminal.app '/tmp/${file_base_name}'"
},
}
]
}
Linux系统
Linux系统写入如下内容:
{
"cmd": ["gcc", "-std=c11", "${file}", "-o", "${file_base_name}"],
"file_regex": "^(.*)\\(([0-9]+),([0-9]+)\\) (Error|Fatal): (.*)$",
"working_dir": "${file_path}",
"selector": "source.c",
"variants": [
{
"name": "Run",
"shell": true,
"linux": {
"cmd": ["gnome-terminal -- bash -c \"\\\"./${file_base_name}\\\";echo;read line;exit; exec bash\""]
},
},
{
"name": "Build and Run",
"shell": true,
"linux": {
"cmd": ["gcc -std=c11 \"${file}\" -o \"${file_base_name}\" && gnome-terminal -- bash -c \"\\\"./${file_base_name}\\\";echo;read line;exit; exec bash\""]
},
}
]
}
保存文件到其给定位置(不要自己变更位置),命名为 MyCBuild.sublime-build
。
运行测试
接着我们在编译前,Tools → Build System → 勾选MyCBuild
,使用 Ctrl+B
选择 Build and Run
便可以正常出结果了。