scanf() 에서 공백을 포함한 문자열 입력받기
Language/C2018. 4. 5. 00:21
- 공백을 포함한 문자열 입력받기
scanf("%[^\n]\n", s);
- 문자열 입력 조건을 통하여 처리하는 방법으로 문자열 조건은 [] 를 통하여 넣을 수 있다.
- ^ 는 제외를 의미. 즉 \n를 제외한 문자열을 입력받고 문자열의 끝은 \n 로 처리하는 문자열이란 뜻이 된다.
- 문자열 조건 관련 몇몇 예제
1)
1 2 3 4 5 6 7 8 9 | #include <stdio.h> int main() { char str[100]; scanf("%[12345]s", str); printf("%s\n", str); return 0; } | cs |
>> 4567 을 입력하면 45가 출력된다.
2)
1 2 3 4 5 6 7 8 9 | #include <stdio.h> int main() { char str[100]; scanf("%[^12345]s", str); printf("%s\n", str); return 0; } | cs |
>> 6745 를 입력하면 67이 출력된다.
>> ^ 는 []안의 문제를 제외한 나머지 문자만 인식한다.
3)
1 2 3 4 5 6 7 8 9 | #include <stdio.h> int main() { char str[100]; scanf("%[0-9]s", str); printf("%s\n", str); return 0; } | cs |
>> 0-9 는 0123456789 를의미한다.
>> 123ab 를 입력하면 123이 출력된다.
>> 1a2b3c 를 입력하면 1만 출력된다.
>> ab123 을 입력하면 이상한 결과가 나온다...
4)
1 2 3 4 5 6 7 8 9 | #include <stdio.h> int main() { char str[100]; scanf("%[a-zA-Z]s", str); printf("%s\n", str); return 0; } | cs |
>> 영문자만 입력을 받는다.
줄바꿈을 입력받지 않기 때문에, 편리한 방법이지만, 각 줄의 앞 뒤에 있는 공백은 무시하고 입력을 받아들이게 된다.
- 따라서 빈 줄은 입력받을 수 없다.
- 또한, 공백으로 시작하는 경우, 공백을 무시하고 문자부터 입력받게 된다.
참고1 : 백준 슬라이드
참고2 : http://blog.daum.net/_blog/BlogTypeView.do?blogid=09ehJ&articleno=18230445&categoryId=789155
'Language > C' 카테고리의 다른 글
비트 연산을 이용한 정수의 산술연산 (분석은 아직..) (0) | 2018.06.04 |
---|---|
printf() 서식문자 %g (0) | 2018.03.07 |
배열에서 배열의 크기 이상의 인덱스를 사용하게 되면... (0) | 2018.02.27 |