_vcprintf_p, _vcprintf_p_l, _vcwprintf_p, _vcwprintf_p_l

인수 목록에 대한 포인터를 사용하여 서식 있는 출력을 콘솔에 기록하고 형식 문자열에서 위치 매개 변수를 지원합니다.

Important

이 API는 Windows 런타임에서 실행되는 애플리케이션에서 사용할 수 없습니다. 자세한 내용은 유니버설 Windows 플랫폼 앱에서 지원되지 않는 CRT 함수를 참조하세요.

구문

int _vcprintf_p(
   const char* format,
   va_list argptr
);
int _vcprintf_p_l(
   const char* format,
   _locale_t locale,
   va_list argptr
);
int _vcwprintf_p(
   const wchar_t* format,
   va_list argptr
);
int _vcwprintf_p_l(
   const wchar_t* format,
   _locale_t locale,
   va_list argptr
);

매개 변수

format
형식 사양입니다.

argptr
인수 목록에 대한 포인터입니다.

locale
사용할 로캘입니다.

자세한 내용은 형식 사양 구문 printfwprintf 함수를 참조하세요.

반환 값

기록된 문자 수 또는 출력 오류가 발생하는 경우 음수 값입니다. null 포인터인 경우 format 매개 변수 유효성 검사에 설명된 대로 잘못된 매개 변수 처리기가 호출됩니다. 실행을 계속할 errno 수 있는 경우 ,로 설정 EINVAL되고 -1이 반환됩니다.

설명

이러한 각 함수는 인수 목록에 대한 포인터를 가져온 다음 _putch 함수를 사용하여 주어진 데이터의 서식을 지정하고 이 데이터를 콘솔에 기록합니다. (_vcwprintf_p . 대신 _putch_vcwprintf_p 사용 _putwch 은 와이드 문자 버전의 _vcprintf_p. 와이드 문자열을 인수로 사용합니다.)

_l 접미사가 있는 이러한 함수 버전은 현재 로캘 대신 전달된 로캘 매개 변수를 사용한다는 점만 제외하고 모두 동일합니다.

argument (있는 경우)가 format의 해당 형식 사양에 따라 변환되어 출력됩니다. 형식 사양은 인수가 형식 문자열에서 사용되는 순서를 지정할 수 있도록 위치 매개 변수를 지원합니다. 자세한 내용은 printf_p 위치 매개 변수를 참조하세요.

이러한 함수는 출력의 줄 바꿈 문자를 CR-LF(캐리지 리턴 라인 피드) 조합으로 변환하지 않습니다.

Important

format이 사용자 정의 문자열이 아닌지 확인하십시오. 자세한 내용은 버퍼 오버런 방지를 참조 하세요.

이 함수는 입력 포인터와 형식 문자열의 유효성을 검사합니다. 형식 문자열에 잘못된 서식 지정 문자가 포함되어 있는 경우 format 이러한 함수는 NULL매개 변수 유효성 검사에 설명된 대로 잘못된 매개 변수 처리기를 호출합니다.argument 계속해서 실행하도록 허용된 경우 이러한 함수가 -1을 반환하고 errnoEINVAL로 설정합니다.

일반 텍스트 루틴 매핑

Tchar.h 루틴 _UNICODE 정의 _MBCS 되지 않음 _MBCS 정의 _UNICODE 정의
_vtcprintf_p _vcprintf_p _vcprintf_p _vcwprintf_p
_vtcprintf_p_l _vcprintf_p_l _vcprintf_p_l _vcwprintf_p_l

요구 사항

루틴에서 반환된 값 필수 헤더
_vcprintf_p, _vcprintf_p_l <conio.h> 및 <stdarg.h>
_vcwprintf_p, _vcwprintf_p_l <conio.h> 및 <stdarg.h>

호환성에 대한 자세한 내용은 호환성을 참조하세요.

Important

Windows 10 버전 2004(빌드 19041) printf 부터 함수 제품군은 반올림을 위한 IEEE 754 규칙에 따라 정확하게 표현 가능한 부동 소수점 번호를 출력합니다. 이전 버전의 Windows에서는 '5'로 끝나는 정확히 표현 가능한 부동 소수점 번호가 항상 반올림됩니다. IEEE 754는 가장 가까운 짝수 숫자("은행의 반올림"이라고도 함)로 반올림해야 한다고 명시합니다. 예를 들어 둘 다 printf("%1.0f", 1.5)printf("%1.0f", 2.5) 2로 반올림해야 합니다. 이전에는 1.5가 2로 반올림되고 2.5가 3으로 반올림되었습니다. 이 변경 내용은 정확히 나타낼 수 있는 숫자에만 영향을 줍니다. 예를 들어 2.35(메모리에 표시될 때 2.350000000000000008에 가까울 때)는 2.4까지 계속 반올림됩니다. 이러한 함수에 의해 수행된 반올림은 이제 로 설정된 fesetround부동 소수점 반올림 모드를 준수합니다. 이전에는 반올림이 항상 동작을 선택했습니다 FE_TONEAREST . 이 변경 내용은 Visual Studio 2019 버전 16.2 이상을 사용하여 빌드된 프로그램에만 영향을 줍니다. 레거시 부동 소수점 반올림 동작 legacy_stdio_float_rounding.obj을 사용하려면 .

예시

// crt_vcprintf_p.c
// compile with: /c
#include <conio.h>
#include <stdarg.h>

// An error formatting function that's used to print to the console.
int eprintf(const char* format, ...)
{
   va_list args;
   va_start(args, format);
   int result = _vcprintf_p(format, args);
   va_end(args);
   return result;
}

int main()
{
   int n = eprintf("parameter 2 = %2$d; parameter 1 = %1$s\r\n",
      "one", 222);
   _cprintf_s("%d characters printed\r\n");
}
parameter 2 = 222; parameter 1 = one
38 characters printed

참고 항목

콘솔 및 포트 I/O
_cprintf, _cprintf_l, _cwprintf, _cwprintf_l
va_arg, va_copy, va_end, va_start
printf_p 위치 매개 변수