sprintf_s 예제

이러한 예제에 가까운 소스 목록을 유지하려면 내러티브가 목록 3 아래에서 다시 시작됩니다. 그림 1은 Visual Studio 2013 디버거에 나타나는 오버런 버퍼를 보여 주며 있습니다. 합법적인 텍스트는 버퍼의 맨 위에 있으며 그 다음에 백필이 있습니다. 내 개발 기계가 설치및 필수 주소 공간 레이아웃 무작위화 (ASLR)를 적용하도록 구성되어 있기 때문에, 여기에 표시된 기계 주소는 다른 예에 표시된 것과 다릅니다. 이는 팔각형 또는 육각형 숫자로 표시되는 문자로 변환됩니다. 예를 들어 ASCII 표현을 사용하는 경우 문자 `a`는 `141` 및 `Z`를 `132`로 쓸 수 있습니다. 이 구문은 null 문자를 «으로 나타내는 데 가장 자주 사용됩니다. 이는 숫자 상수 0(0)과 정확히 동일합니다. 팔각형 수에는 일반 옥탈 상수와 마찬가지로 0 접두사가 포함되지 않습니다. 육각형을 지정하려면 접두사가 `x`(이 컨텍스트에서 대문자 `X`가 허용되지 않도록 0을 생략합니다). 헥사데피말 서열에 대한 지원은 ANSI 확장이다. 표준(7)을 참조하십시오.

필드 너비 또는 정밀도 또는 둘 다 별표(*)로 나타낼 수 있습니다. 이 경우 int 형식인수는 필드 너비 또는 정밀도를 제공합니다. 필드 너비 또는 정밀도 또는 둘 다를 지정하는 인수는 변환할 인수(있는 경우) 앞에 해당 순서로 나타나야 합니다. 음의 필드 폭은 로 촬영 – 플래그 뒤에 양수 필드 폭. 음의 정밀도는 정밀도가 생략된 것처럼 촬영됩니다. 변환 사양의 %n$ 형식을 포함하는 형식 문자열에서 필드 너비 또는 정밀도는 시퀀스 *m$로 표시될 수 있으며, 여기서 m은 범위의 소수점 정수 [1, NL_ARGMAX]에서 인수 목록(형식 인수 후)에 있는 위치를 제공합니다. 필드 너비 또는 정밀도를 포함하는 정수 인수(예: 표 2)는 문자열 값이 역할을 하지 않는 다음 예제에서 사용되는 값인 신중한 디버깅 세션 중에 만든 메모에서 가져온 실제 값을 나열합니다. 다음 예제에서는 테스트 프로그램의 실제 값을 사용하므로 발생하는 일을 훨씬 쉽게 시각화할 수 있습니다.