sscanf 예제

스프린트프의 상대 또는 “반대”는 스캔입니다. 문자열을 보고 형식 지정자가 있는 다른 문자열에 따라 값을 추출합니다. 그런 다음 해당 인수에 추출한 값을 배치합니다. 인수는 변수이거나 값을 할당할 수 있는 다른 것들이어야 합니다. 예를 들어 다음 코드 세그먼트 다음에 변수 f에는 -3.6이 포함되고 변수 i에는 17이 포함됩니다. 동적 할당 변환 지정자를 사용하려면 m을 길이 수정자로 지정합니다(따라서 %ms 또는 %m[range]). 호출자는 다음 예제와 같이 반환된 문자열을 free(3)해야 합니다. 예를 들어 l 형식 수정자는 %d와 같은 정수 변환과 함께 사용되어 해당 포인터 인수가 int에 대한 포인터가 아닌 긴 int를 참조하도록 지정합니다. scanf() 함수 제품군은 아래에 설명된 형식에 따라 입력을 스캔합니다.

이 형식에는 변환 사양이 포함될 수 있습니다. 이러한 변환의 결과는 형식 다음에 오는 포인터 인수가 가리키는 위치에 저장됩니다. 각 포인터 인수는 해당 변환 사양에서 반환되는 값에 적합한 형식이어야 합니다. 리터럴 `%`와 일치합니다. 즉, 형식 문자열의 %%는 단일 입력 `%` 문자와 일치합니다. 변환이 수행되지 않지만 초기 공백 문자는 삭제되고 할당이 수행되지 않습니다. h에 관해서는, 그러나 다음 포인터는 ptrdiff_t에 대한 포인터입니다. 이 수정자는 C99에서 도입되었습니다. 성공시 함수는 채워진 변수 수를 반환합니다.

데이터를 성공적으로 읽기 전에 입력 오류가 발생한 경우 EOF가 반환됩니다. 형식 지정자는 이 프로토타입을 따릅니다: [===[*][너비][수정자][수정자]type=] ANSI C에 의해 정의된 형식 수정자 및 변환 지정기의 일부 조합은 의미가 없습니다(예: %Ld). Linux에서 잘 정의된 동작이 있을 수 있지만 다른 아키텍처에서는 그렇게 할 필요가 없습니다. 따라서 일반적으로 ANSI C에 의해 정의되지 않은 수정자를 사용하는 것이 좋습니다. 모든 기능은 완전히 C89 준수하지만, 추가 지정기 q와 L 및 l 지정기의 추가 동작을 제공합니다. 후자는 C89에 정의된 지정자의 동작을 변경하므로 버그로 간주될 수 있습니다. 파일 설명자 기본 스트림이 잘못되었거나 읽기 위해 열리지 않습니다. 공백이 아닌 문자의 시퀀스와 일치합니다. 다음 포인터는 입력 시퀀스를 보유할 수 있을 만큼 긴 문자 배열에 대한 포인터여야 하며 자동으로 추가되는 null 바이트(“)를 종료해야 합니다.