How We Coding

- 공백을 포함한 문자열 입력받기 


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