Language
[ C ] scanf 공백 및 원하는 형태 입력받기
궁금한게 많은 개발자
2020. 10. 30. 22:00
scanf를 사용하다 보면 공백이나 개행문자를 입력하게 되면 그 문자를 입력하기 전까지만 버퍼에 저장되게 된다.
물론 gets함수를 사용할 수 있겠지만 scanf는 원하는 format을 지정할 수 있으므로 좀 더 유연하다고 생각된다.
#include <stdio.h>
#include <stdlib.h>
int main(void) {
char buf[20];
scanf("%s", buf); // 공백, 개행문자가 들어오기 전까지 저장
scanf("%[123], buf); // 123이외의 문자가 들어오기 전까지 저장
scanf("%[^\n], buf); // 개행문자 이외의 것만 받으며, 개행문자가 들어오기 전까지 저장
return 0;
}
위의 코드처럼 %[]의 대괄호 안에 받고 싶은 정규표현식을 넣으면 그에 해당하는 문자들만 저장할 수 있다.
정규표현식으로 생각보다 다양한 케이스들을 분리하여 원하는 것들만 받을 수 있으므로 유용하다.
굳이 이런 기능이 필요할까 싶지만, 뭔가 이런 특수한 케이스가 꽤나 많이 생겨 기록해두려 한다.