C에서 scanset이 무엇인지 봅시다. scanset은 기본적으로 scanf 계열 함수에서 지원하는 지정자입니다. %[]로 표시됩니다. scanset 내부에서는 하나의 문자 또는 문자 집합(대소문자 구분)만 지정할 수 있습니다. 스캔 세트가 처리될 때 scanf()는 스캔 세트에 언급된 문자만 처리할 수 있습니다.
예
#include<stdio.h> int main() { char str[50]; printf("Enter something: "); scanf("%[A-Z]s", str); printf("Given String: %s", str); }
출력
Enter something: HElloWorld Given String: HE
소문자로 작성된 문자는 무시합니다. 'W'도 앞에 소문자가 있기 때문에 무시됩니다.
이제 스캔 세트의 첫 번째 위치에 '^'가 있으면 지정자는 해당 문자가 처음 발생한 후 읽기를 중지합니다.
예
#include<stdio.h> int main() { char str[50]; printf("Enter something: "); scanf("%[^r]s", str); printf("Given String: %s", str); }
출력
Enter something: HelloWorld Given String: HelloWo
여기에서 scanf()는 문자 'r'을 가져온 후 문자를 무시합니다. 이 기능을 사용하여 scanf가 공백이 있는 문자열을 사용하지 않는 문제를 해결할 수 있습니다. %[^\n]을 넣으면 새 줄 문자가 나올 때까지 모든 문자를 사용합니다.
예
#include<stdio.h> int main() { char str[50]; printf("Enter something: "); scanf("%[^\n]s", str); printf("Given String: %s", str); }
출력
Enter something: Hello World. This line has some spaces. Given String: Hello World. This line has some spaces.