scanf 사용법 관련

2021. 12. 12. 23:17C

백준 11718번 풀다가 모르는 부분이어서 기록하며 공부.


 

표준입력함수 scanf() 

형식은 int scanf(const char *, 가변인자);

리턴 값 

성공 시 : 입력받은 data 개수 

실패 시 : EOF(-1)

 

 

scanf 문을 쓸 때 공백이 있는 문자열을 입력 받을 수 있다. 문자열 입력 조건을 통해 처리하는 방법이다.

 

[]을 통하여 문자열 조건을 넣을 수 있다. 

 

[예제]

 

char str[80];

scanf("%[12345]s",str);

// 입력이 "4567"이면 str에 "45"가 저장된다.

 

char str[80];

scanf("%[^12345]s",str);

//입력이 "6745"이면 str에 "67"만 읽힌다.

scanf("%[0-9]s",str);

//0-9 는 0123456789 와 동일하다.

 

 

char c[101];

scanf("%[^\n]s",c); 

// ^ 는. [] 안 이외의 문자만 입력을 허용한다는 의미이다.

// 위의 코드는 '\n'(new line) 문자를 만나기 전까지 입력을 받는다는 뜻이다.

 

char str[80];

scanf("%79[^\n]s",str);

// '\n'(new line) 문자를 만나기 전까지 입력을 받되, 79자까지만 입력을 받는다.

 

char str[80];

scanf("%[a-zA-Z]s",str);

// 영문자만 입력을 받는다.

 

입력 버퍼를 비우는 이슈에서 scanf를 통해 입력받지 않은 개행문자를 입력받아 버퍼를 비우기 위해 getchar() 를 사용한다.