문제를 풀다가 문자열 한 줄을 받아야 하는 일이 간혹 생긴다.
이때 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 |