2019-09-22 TIL
vscode에서 터미널로 입출력 하는 방법
c언어는 scanf로 입력을 받는다던가 했던거 같은데,
vscode에서 터미널로 입출력을 받기 위해서 많은 자료를 찾아봤다.
먼저 vscode에서 디버깅으로 표준 입출력을 하기 위해선,
왼쪽 탭에서 debug을 선택하여 위의 그림과 같이 Add Configuration을 선택하면 ‘launch.json’ 파일이 나타난다.
거기 아래에 "console": "integratedTerminal"
코드를 추가한다.
{
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Launch Program",
"program": "${workspaceFolder}/config.js",
"console": "integratedTerminal"
}
]
}
이제 디버그 초록색 화살표를 누르면 터미널에서 입출력을 할 수 있게 된다.
여러 줄을 입력받아 출력하는 표준 방식으로는
const readline = require("readline");
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
let input = [];
rl.on("line", line => {
input.push(line)
}).on("close", function() {
console.log(input);
process.exit();
});
위의 방식대로 한다면, 한 줄의 입력이 배열에 추가되는 방식이다.
하지만 프로그래머스라는 사이트에서 사용하는 방법은
const readline = require("readline");
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
let input = "";
rl.on("line", line => {
input = input.concat(line+"\n")
}).on("close", function() {
const n = input.split(" ");
const m = n[2].split(/\r\n|\r|\n/);
const a = Number(n[0]),
b = Number(n[1]),
c = Number(m[0]);
const d = Number(m[1]);
process.exit();
});
만약 입력이 아래와 같다면, n[2]에는 2\r\n5가 들어가있기 때문에, split을 /\r\n|\r|\n/
으로 해줘야 한다.
1 0 2
5