ComputerScience/PS

[입/출력] scanf("%s") 로 공백 포함해서 한 줄 입력 받기

kyungmin.yu 2019. 4. 10. 17:50

문제를 풀다가 문자열 한 줄을 받아야 하는 일이 간혹 생긴다.

 

이때 scanf("%s", in); 과 같은 형태로 입력을 받을 경우 공백 문자에서 끊겨벼려서 한 줄을 전부 입력받을 수 없게 된다.

 

cin.getline을 사용하는 방법도 있고(C++), gets, fgets를 사용하는 방법(C)이 인터넷에 많이 굴러다니는데

 

나의 경우에는 문제를 풀 때 scanf말고 다른게 들어가면 헷갈리기 시작해서 잘 안쓰는 편이다.(사실 그냥 위에거 아무거나 쓰면 된다.

 

그런데 굳이 scanf를 사용해서 한 줄을 입력받기 위해서는 %와 s사이에 정규식을 집어넣어 주면 된다.

 

간단한거라 외워두면 편할듯 하다.

 

scanf("%[^\n]s", in); 인데 [^\n]이라는 정규식은 그냥 \n(개행 문자)가 나오기 전까지 입력받으라는 소리다. 

 

^이후에 다른걸 쓰면 여러가지 방법으로 응용이 가능할 수도 있을것 같은데 굳이 문제 풀면서 그럴 것 같지는 않다.

'ComputerScience > PS' 카테고리의 다른 글

[Programmers] 완주하지 못한 선수  (0) 2020.07.25
[BOJ] 1027 고층건물  (0) 2019.04.10
[BOJ] 1011 Fly me to the Alpha Centauri  (0) 2019.04.10
[BOJ/DP] 1029 그림교환  (0) 2019.04.10