동적 할당 변환 지정자를 사용하려면 m을 길이 수정자로 지정합니다(따라서 %ms 또는 %m[range]). 호출자는 다음 예제와 같이 반환된 문자열을 free(3)해야 합니다. vfscanf() 함수는 vfprintf(3)와 유사하며 포인터의 가변 인수 목록을 사용하여 스트림 포인터 스트림에서 입력을 읽습니다(stdarg(3 참조). vscanf() 함수는 표준 입력에서 변수 인수 목록을 검색하고 vsscanf() 함수는 문자열에서 변수 인수 목록을 검색합니다. 이들은 각각 vprintf (3) 및 vsprintf (3) 함수와 유사합니다. C vscanf, vfscanf 및 vsscanf에는 다음과 같은 구문이 있습니다. 함수 vscanf(), vfscanf(및 vsscanf()는 인수 목록이 인수 목록에 대한 포인터로 대체되었다는 점을 제외하면 각각 scanf(), fscanf(및 sscanf)와 기능적으로 동일합니다. 이 포인터는 헤더 stdarg.h에 정의된 va_list 형식이어야 합니다. • 선택적 형식 수정자 문자입니다.
예를 들어, l 형식 수정자는 %d와 같은 정수 변환과 함께 사용되어 해당 포인터 인수가 int에 대한 포인터가 아닌 긴 int를 참조하도록 지정합니다. 정수 변환의 결과는 해당 정수 유형에 저장할 수 있는 크기를 초과합니다. L과 동일합니다. 이 지정기는 ANSI C. 선택적으로 서명된 소수점 정수와 일치합니다. 다음 포인터는 int에 대한 포인터여야 합니다. 이러한 함수는 성공적으로 일치하고 할당된 입력 항목의 수를 반환하며, 이는 조기 일치 실패시 제공된 것보다 적거나 0이 될 수 있습니다. . 포인터 값(printf(3)에서 %p로 인쇄됨)과 일치하며, 다음 포인터는 void에 대한 포인터여야 합니다. 모든 기능은 완전히 C89 준수하지만, 추가 지정기 q와 L 및 l 지정기의 추가 동작을 제공합니다. 후자는 C89에 정의된 지정자의 동작을 변경하므로 버그로 간주될 수 있습니다.
각 변환 지정자의 동작 후에 시퀀스 포인트가 있습니다. 이렇게 하면 동일한 „싱크” 변수에 여러 필드를 저장할 수 있습니다. 입력을 구문 분석하기 전에 [, c 및 n 을 제외한 모든 변환 지정자는 모든 선행 공백 문자(isspace를 호출하여 결정됨)를 소비하고 삭제합니다. 소비된 이러한 문자는 지정된 최대 필드 너비에 포함되지 않습니다. 고정 너비 정수 유형(int8_t 등)에 대한 올바른 변환 사양은 헤더 에 정의되어 있습니다(SCNdMAX, SCNuMAX 등은 %jd, %ju 등)과 동의어입니다. 이러한 모든 함수는 va_arg를 적어도 한 번 호출하며, arg값은 반환 후 확정되지 않습니다. 이러한 함수는 va_end를 호출하지 않으며 호출자에서 수행해야 합니다.