printf_p Positional 매개 변수
위치 매개 변수 인수 필드 형식 문자열에 대체 될 번호를 지정할 수가 있습니다.다음 위치 매개 변수 printf 사용할 수 있는 기능.
printf, _printf_l, wprintf, _wprintf_l
_printf_p, _printf_p_l, _wprintf_p, _wprintf_p_lsprintf, _sprintf_l, swprintf, _swprintf_l, __swprintf_l
_sprintf_p, _sprintf_p_l, _swprintf_p, _swprintf_p_l_cprintf, _cprintf_l, _cwprintf, _cwprintf_l
_cprintf_p, _cprintf_p_l, _cwprintf_p, _cwprintf_p_l않는다면, _fprintf_l, fwprintf, _fwprintf_l
_fprintf_p, _fprintf_p_l, _fwprintf_p, _fwprintf_p_lvprintf, _vprintf_l, vwprintf, _vwprintf_l
_vprintf_p, _vprintf_p_l, _vwprintf_p, _vwprintf_p_lvfprintf, _vfprintf_l, vfwprintf, _vfwprintf_l
_vfprintf_p, _vfprintf_p_l, _vfwprintf_p, _vfwprintf_p_lvsprintf, _vsprintf_l, vswprintf, _vswprintf_l, __vswprintf_l
_vsprintf_p, _vsprintf_p_l, _vswprintf_p, _vswprintf_p_l
위치 매개 변수를 지정합니다.
인덱싱 매개 변수
기본적으로 위치 서식 있는 경우 위치 함수 이외의 위치로 항목을 동일 하 게 동작 합니다.위치 매개 변수를 형식으로 지정 됩니다 "%m$x" 여기서 m 형식 문자열 앞에 오는 매개 변수를 목록에서 매개 변수의 위치를 나타내는 숫자 서 수를 나타냅니다 및 x 에 지정 된 형식 필드 문자 형식을 나타냅니다의 printf 함수입니다.매개 변수 목록에서 및 나머지 목록에서 첫 번째 요소에 대해 값 1부터 인덱싱됩니다.형식 필드 문자에 대 한 자세한 내용은 참조 하십시오. printf 형식 필드 문자.
이 동작의 예:
_printf_p("%1$s %2$s", "November", "10");
인쇄 합니다.
November 10
사용 되는 숫자의 순서 지정 된 인수의 순서를 일치할 필요가 없습니다.그러므로 다음은 유효합니다.
_printf_p("%2$s %1$s", "November", "10");
인쇄 합니다.
10 November
매개 변수를 사용할 수 있습니다 이상 한 번 포맷 하는 동안 달리 전통의 형식 문자열, 따라서 그
_printf_p("%{1$d times %1$d is %2$d", 10, 100);
인쇄 합니다.
10 times 10 is 100
그러나 모든 인수 곳 이나 한 번 형식 문자열에서 사용 해야 합니다.
위치 매개 변수는 형식 문자열에서 사용할 수 있는 최대 주어진 된 _ARGMAX.
너비 및 Prevision
경우는 * 기호 너비 또는 정밀도에서 인수를 결정 하는 지정 하는 데 사용 됩니다 다음 너비 또는 prevision 값의 위치를 바로 다음 표시 되어야의 * 기호.다음 예제를 참조하십시오.
_printf_p("%1$*2$s","Hello", 10);
또는
_printf_p("%2$*1$s",10, "Hello");
믹싱 위치와 비 위치 인수
위치 매개 변수가 아닌-위치 매개 변수가 동일한 형식 문자열 함께 사용할 수 없습니다.그러나, printf_s 및 관련된 함수를 여전히 지원 비 위치 매개 변수가 위치 매개 변수를 포함 하는 형식 문자열입니다.
예제
// positional_args.c
// Positional arguments allow the specification of the order
// in which arguments are consumed in a formatting string.
#include <stdio.h>
int main(int argc, char *argv[])
{
int i = 1,
j = 2,
k = 3;
double x = 0.1,
y = 0.2,
z = 0.3;
char *s1 = "abc",
*s2 = "def",
*s3 = "ghi";
// If positional arguments are unspecified,
// normal input order is used.
_printf_p("%d %d %d\n", i, j, k);
// Positional args are numbers indicating the
// argument enclosed in curly braces.
_printf_p("%3$d %1$d %2$d\n", i, j, k);
// The same positional argument may be reused.
_printf_p("%1$d %2$d %1$d\n", i, j);
_printf_p("%1$s %2$s %3$s\n", s1, s2, s3);
_printf_p("%3$s %1$s %2$s\n", s1, s2, s3);
}