Architecturas | vsscanf 예제

vsscanf 예제

C vscanf, vfscanf 및 vsscanf 메서드는 stdarg.h 및 stdio.h에서 사용됩니다. C vscanf, vfscanf 및 vsscanf에는 다음과 같은 구문이 있습니다. • 선택적 형식 수정자 문자입니다. 예를 들어 l 형식 수정자는 %d와 같은 정수 변환과 함께 사용되어 해당 포인터 인수가 int에 대한 포인터가 아닌 긴 int를 참조하도록 지정합니다. vfscanf() 함수는 vfprintf(3)와 유사하며 포인터의 가변 인수 목록을 사용하여 스트림 포인터 스트림에서 입력을 읽습니다(stdarg(3 참조). vscanf() 함수는 표준 입력에서 변수 인수 목록을 검색하고 vsscanf() 함수는 문자열에서 변수 인수 목록을 검색합니다. 이들은 각각 vprintf (3) 및 vsprintf (3) 함수와 유사합니다. 함수 vscanf(), vfscanf(및 vsscanf()는 인수 목록이 인수 목록에 대한 포인터로 대체되었다는 점을 제외하면 각각 scanf(), fscanf(및 sscanf)와 기능적으로 동일합니다. 이 포인터는 헤더 stdarg.h에 정의된 va_list 형식이어야 합니다. 동적 할당 변환 지정자를 사용하려면 m을 길이 수정자로 지정합니다(따라서 %ms 또는 %m[range]). 호출자는 다음 예제와 같이 반환된 문자열을 free(3)해야 합니다.

후자는 C89에 정의된 지정자의 동작을 변경하므로 버그로 간주될 수 있습니다. . . • 최대 필드 너비를 지정하는 선택적 소수점 정수입니다. 문자 읽기는 이 최대값에 도달하거나 일치하지 않는 문자가 발견되면 둘 중 먼저 발생하는 경우 중지됩니다. 대부분의 변환은 초기 공백 문자를 삭제합니다(예외는 아래에 설명됨)이며 이러한 삭제된 문자는 최대 필드 너비에 포함되지 않습니다. 문자열 입력 변환은 입력의 끝을 표시하기 위해 종료 null 바이트(« )를 저장합니다. 최대 필드 너비에는 이 종단기가 포함되지 않습니다. 각 변환 지정자의 동작 후에 시퀀스 포인트가 있습니다. 이렇게 하면 동일한 « 싱크 » 변수에 여러 필드를 저장할 수 있습니다. 형식 문자열은 입력 문자의 시퀀스를 처리하는 방법을 설명하는 지시문 시퀀스로 구성됩니다.

지시문 처리가 실패하면 추가 입력이 읽히지 않고 scanf()가 반환됩니다. « 오류 »는 입력 오류, 입력 문자를 사용할 수 없음을 의미하거나 일치 실패를 의미하며 입력이 부적절하다는 의미(아래 참조)가 될 수 있습니다. . . 입력이 사용되지 않습니다. 할당 수를 증가시키지 않습니다. 지정자가 할당 억제 연산자가 정의된 경우 동작이 정의되지 않음 변환이 d, i, u, x, X 또는 n 중 하나가 될 것임을 나타내고 다음 포인터는 긴 int 또는 서명되지 않은 긴 int(int가 아닌)에 대한 포인터입니다. 또는 변환이 e, f 또는 g 중 하나가 되고 다음 포인터가 float가 아닌 두 배로 포인터가 됩니다. 두 개의 l 문자를 지정하는 것은 L과 같습니다. %c 또는 %s와 함께 사용하는 경우 해당 매개 변수는 각각 넓은 문자 또는 와이드 문자 문자열에 대한 포인터로 간주됩니다. h에 관해서는, 그러나 다음 포인터는 ptrdiff_t에 대한 포인터입니다. 이 수정자는 C99에서 도입되었습니다.

L과 동일합니다. 이 지정기는 ANSI C에 존재하지 않습니다. q의 사용은 L과 동등한 부동 변환에 사용될 수 있으므로 4.4BSD에서와 동일하지 않습니다. h에 관해서는, 그러나 다음 포인터는 서명된 char 또는 서명되지 않은 char에 대한 포인터입니다. scanf() 함수는 표준 입력 스트림 stdin에서 입력을 읽고, fscanf()는 스트림 포인터 스트림에서 입력을 읽고, sscanf()는 str이 가리키는 문자 문자열에서 입력을 읽습니다. 변환 지정자 s 및 [항상 일치하는 문자 외에 null 종기 자를 저장합니다. 대상 배열의 크기는 지정된 필드 너비보다 하나 이상 커야 합니다.