혹시 "%[^.,\"\'!?]" 설명해주실 수 있나요??..

xxxvan의 이미지

sscanf_s(word,"%[^.,\"\'!?]",word,256);
해당 특수문자들을 제외하고 word에 다시 값을 저장한다. 라고 알고는 있지만 막상 저 부분에 대한 것을 정확히 모르겠네요.. 괄호안에 문자 위치가 바뀔시에는 실행되지도않고해서 이렇게 질문드립니다.

cinsk의 이미지

scanf() 계열을 쓰는 것은 별로 추천하고 싶지 않습니다. 가능하면 strtok/strtok_r을 쓰거나, strspn/strcspn/strpbrk/strchr을 쓰길 바랍니다.

"%[...]"는 ...에 해당하는 character로만 이루어진 set을 입력받기 위한 format specifier이며, 첫글자가 "^"인 경우, 이후 나오는 글자 이외의 character로만 이루어진 set을 뜻합니다. 그래서 ".,\"\'!?"에 해당하지 않는 글자만 읽어서 저장하라는 뜻입니다.

MS 함수는 잘 모르지만, sscanf()와 유사할 것이라는 가정 아래, input인 첫번째 인자를 이후, output 인자에 다시 쓰는 것은, undefined behavior에 해당합니다.