All Articles

vscode에서 터미널로 입출력 하는 방법


2019-09-22 TIL


vscode에서 터미널로 입출력 하는 방법

c언어는 scanf로 입력을 받는다던가 했던거 같은데,

vscode에서 터미널로 입출력을 받기 위해서 많은 자료를 찾아봤다.

먼저 vscode에서 디버깅으로 표준 입출력을 하기 위해선,

lauch_json

왼쪽 탭에서 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