printf_s, _printf_s_l, wprintf_s, _wprintf_s_l
형식이 지정 된 출력을 표준 출력 스트림에 인쇄 합니다.이러한 버전의 수 printf, _printf_l, wprintf, _wprintf_l 에 설명 된 대로 보안 향상 기능을 CRT의 보안 기능.
int printf_s(
const char *format [,
argument]...
);
int _printf_s_l(
const char *format,
locale_t locale [,
argument]...
);
int wprintf_s(
const wchar_t *format [,
argument]...
);
int _wprintf_s_l(
const wchar_t *format,
locale_t locale [,
argument]...
);
매개 변수
format
컨트롤에 서식을 지정 합니다.argument
선택적 인수입니다.locale
사용 하는 로캘.
반환 값
오류가 발생 하면 인쇄 문자 또는 음수 값을 반환 합니다.
설명
printf_s 서식을 지정 하 고 일련의 문자 및 값을 표준 출력 스트림에 출력 하는 함수 stdout.인수를 따를 경우는 형식 문자열은 format 문자열 인수에 대한 출력 형식을 결정 하는 사양에 포함 되어야 합니다.
간의 주요 차이점 printf_s 및 printf 는 printf_s 반면의 형식 문자열을 사용할 수 있는 서식 문자를 확인 printf 만 형식 문자열이 널 포인터 인지 여부를 확인 합니다.하나 실패를 확인 하는 경우에 잘못 된 매개 변수 처리기를의 설명에 따라 호출 됩니다 매개 변수 유효성 검사.계속 하려면 함수는-1 반환 하 고 설정 실행이 허용 되는 경우 errno 에 EINVAL.
에 대한 내용은 errno 및 오류 코드를 참조 하십시오. _sys_nerr, _doserrno, errno, _sys_errlist,.
printf_s및 fprintf_s 를 제외 하 고는 동일 하 게 동작 printf_s 출력에 씁니다 stdout 아니라 대상 형식의 FILE.자세한 내용은 fprintf_s, _fprintf_s_l, fwprintf_s, _fwprintf_s_l을 참조하십시오.
wprintf_s와이드 문자 버전인 printf_s. format와이드 문자 문자열이입니다.wprintf_s및 printf_s 스트림 ANSI 모드에서 연 경우 동일 하 게 동작 합니다.printf_s현재 출력 스트림으로 유니코드를 지원 하지 않습니다.
이러한 함수 버전을 _l 접미사는 전달 하지 않고 현재 스레드 로캘은 로캘 매개 변수를 사용 하는 것을 제외 하 고 동일 합니다.
일반 텍스트 루틴 매핑
TCHAR입니다.H 루틴 |
_UNICODE 및 _Mbcs가 정의 되어 있지 않습니다 |
_Mbcs가 정의 |
_unicode가 정의 |
---|---|---|---|
_tprintf_s |
printf_s |
printf_s |
wprintf_s |
_tprintf_s_l |
_printf_s_l |
_printf_s_l |
_wprintf_s_l |
format 인수에 일반 문자를 이스케이프 시퀀스로 구성 됩니다 및 (인수를 따를 경우 format) 형식 사양을.일반 문자 및 이스케이프 시퀀스 복사 됩니다 stdout 해당 모양 순서 대로.예를 들어, 줄
printf_s("Line one\n\t\tLine two\n");
출력을 생성합니다.
Line one
Line two
형식 사양을 는 백분율 기호 항상 시작 (%)와 왼쪽 오른쪽으로 읽습니다.때 printf_s 첫 번째 형식 사양 (있는 경우)을 발견 한 후 첫 번째 인수의 값을 변환 format 한 후 그에 따라 출력.두 번째 인수를 변환 하 고 출력을 둘째 형식 사양을 사용 하면 등.인수를 형식 사양을 보다 더 있을 경우 추가 인수는 무시 됩니다.모든 형식 사양에 대한 인수가 충분 하지 않습니다 경우 결과 정의 되지 않습니다.
보안 정보 |
---|
되도록 format 사용자 정의 하는 문자열이 아닙니다. |
요구 사항
루틴 |
필수 헤더 |
---|---|
printf_s, _printf_s_l |
<stdio.h> |
wprintf_s, _wprintf_s_l |
<stdio.h> 또는 <wchar.h> |
콘솔에서 지원 되지 않습니다 Windows 스토어 응용 프로그램입니다.콘솔에 연결 된 표준 스트림 핸들 stdin, stdout, 및 stderr, C 런타임 함수를 사용 하기 전에 이동 해야 Windows 스토어 응용 프로그램입니다.추가 호환성 정보를 참조 하십시오. 호환성 소개에서 합니다.
예제
// crt_printf_s.c
/* This program uses the printf_s and wprintf_s functions
* to produce formatted output.
*/
#include <stdio.h>
int main( void )
{
char ch = 'h', *string = "computer";
int count = -9234;
double fp = 251.7366;
wchar_t wch = L'w', *wstring = L"Unicode";
/* Display integers. */
printf_s( "Integer formats:\n"
" Decimal: %d Justified: %.6d Unsigned: %u\n",
count, count, count );
printf_s( "Decimal %d as:\n Hex: %Xh C hex: 0x%x Octal: %o\n",
count, count, count, count );
/* Display in different radixes. */
printf_s( "Digits 10 equal:\n Hex: %i Octal: %i Decimal: %i\n",
0x10, 010, 10 );
/* Display characters. */
printf_s("Characters in field (1):\n%10c%5hc%5C%5lc\n", ch, ch, wch, wch);
wprintf_s(L"Characters in field (2):\n%10C%5hc%5c%5lc\n", ch, ch, wch, wch);
/* Display strings. */
printf_s("Strings in field (1):\n%25s\n%25.4hs\n %S%25.3ls\n",
string, string, wstring, wstring);
wprintf_s(L"Strings in field (2):\n%25S\n%25.4hs\n %s%25.3ls\n",
string, string, wstring, wstring);
/* Display real numbers. */
printf_s( "Real numbers:\n %f %.2f %e %E\n", fp, fp, fp, fp );
/* Display pointer. */
printf_s( "\nAddress as: %p\n", &count);
}
샘플 출력
Integer formats:
Decimal: -9234 Justified: -009234 Unsigned: 4294958062
Decimal -9234 as:
Hex: FFFFDBEEh C hex: 0xffffdbee Octal: 37777755756
Digits 10 equal:
Hex: 16 Octal: 8 Decimal: 10
Characters in field (1):
h h w w
Characters in field (2):
h h w w
Strings in field (1):
computer
comp
Unicode Uni
Strings in field (2):
computer
comp
Unicode Uni
Real numbers:
251.736600 251.74 2.517366e+002 2.517366E+002
Address as: 0012FF78
해당 .NET Framework 항목
참고 항목
참조
않는다면, _fprintf_l, fwprintf, _fwprintf_l
scanf, _scanf_l, wscanf, _wscanf_l