scanf의 형 지정자 중 [...]과 [^...]에 대해
초월
질문 제목 : scanf의 형 지정자 중 [...]과 [^...]에 대해scanf의 형 지정자 중 [...]과 [^...]이 어떻게 동작하는 지 궁금합니다.
질문 내용 :
scanf의 형 지정자중에 [...]와 [^...]가 있다는 걸 알았는데요.
[...]은 괄호안에 있는 문자만 입력된다.입력동작은력동작은 일치하지 않는 문자가 나타나거나
지정된 필드 폭 이상 사용되거나 엔터키를 누르는 즉시 종료된다.
라고 나와있는 데요. 한 예로 scanf(%[ab],str); 이라고 했을 때를 보면요.
abc를 입력했을 때에는 ab가 str에 저장된 다음, c는 버퍼에 남겨진 채로 scanf를 빠져나오는 것이고,
cab를입력했을 때에는 str에 널 문자만 저장되고 cab가 버퍼에 남겨진 채로scanf를 빠져나오거나,
아니면 str에는 아무것도 저장이 안되고 cab가 버퍼에 남겨진 채로 scanf를 빠져나오는 것인가요?
그리고, a~z, 1~9를 입력받으려고할 경우에 %[a...z1...9]로 쓸 수 있나요?
[^...]은 괄호안에 있지 않는 문자만 입력된다고 하는데요.
이것 역시 문자열을 읽는 중에 괄호안의 문자들 중에서 같은게 있으면 나머지 부분은 버퍼에 남겨진 채로
scanf를 빠져나오는 것인가요.scanf(%[^\n],str); 이렇게 하면 gets 함수처럼 동작하게 되는 것인가요?
-
Sweet
정규표현식을 사용할 수 있었나부네...
-
맑은가람
정규표현식이었군요. 찾아보니 분량이 방대하네요... 윗분들 답변 감사합니다.
-
돋가이
처음 보는 내용이네요 허허;;;
이런건 언제 만든거햐!!! -
세여닝
첫번째. 후자입니다.
두번째. %[a-z1-9]입니다.
세번째. 네 맞습니다.
네번째. 비슷하게 동작하네요. 맞는듯합니다.
ps. 문자 집합의 기호로는 [, ^, -, ]만 지원합니다.