printf_p
parameter posisi
Parameter posisi memungkinkan Anda menentukan berdasarkan angka argumen untuk diganti menjadi bidang dalam string format. Fungsi parameter printf
posisi berikut tersedia:
Cara menentukan parameter posisi
Pengindeksan parameter
Secara default, jika tidak ada pemformatan posisi, fungsi posisi bertingkah identik dengan yang tidak berposisi. Anda menentukan parameter posisi untuk diformat dengan menggunakan %n$
di awal penentu format, di mana n
adalah posisi parameter untuk diformat dalam daftar parameter. Posisi parameter dimulai pada 1 untuk argumen pertama setelah string format. Sisa penentu format mengikuti aturan yang sama dengan penentu printf
format. Untuk informasi selengkapnya tentang penentu format, lihat Sintaks spesifikasi format: printf
dan wprintf
fungsi.
Berikut adalah contoh pemformatan posisi:
_printf_p("%1$s %2$s", "November", "10");
Contoh ini mencetak:
November 10
Urutan angka yang digunakan tidak perlu cocok dengan urutan argumen. Misalnya, berikut adalah string format yang valid:
_printf_p("%2$s %1$s", "November", "10");
Contoh ini mencetak:
10 November
Tidak seperti string format tradisional, parameter posisi dapat digunakan lebih dari sekali dalam string format. Contohnya,
_printf_p("%1$d times %1$d is %2$d", 10, 100);
Contoh ini mencetak:
10 times 10 is 100
Semua argumen harus digunakan setidaknya sekali di suatu tempat dalam string format. Jumlah maksimum parameter posisi yang diizinkan dalam string format diberikan oleh _ARGMAX
.
Lebar dan presisi
Anda dapat menggunakan *n$
untuk menentukan parameter posisi sebagai penentu lebar atau presisi, di mana n
adalah posisi parameter lebar atau presisi dalam daftar parameter. Posisi lebar atau nilai presisi harus muncul segera mengikuti simbol * . Contohnya,
_printf_p("%1$*2$s","Hello", 10);
atau
_printf_p("%2$*1$s", 10, "Hello");
Mencampur argumen posisional dan non-posisi
Parameter posisi mungkin tidak dicampur dengan parameter non-posisi dalam string format yang sama. Jika ada pemformatan posisi yang digunakan, semua penentu format harus menggunakan pemformatan posisi. Namun, printf_p
dan fungsi terkait masih mendukung parameter non-posisi dalam string format yang tidak berisi parameter posisi.
Contoh
// positional_args.c
// Build by using: cl /W4 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 i = 1,
j = 2,
k = 3;
double x = 0.1,
y = 2.22,
z = 333.3333;
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 arguments are numbers followed by a $ character.
_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);
// The positional arguments may appear in any order.
_printf_p("%1$s %2$s %3$s\n", s1, s2, s3);
_printf_p("%3$s %1$s %2$s\n", s1, s2, s3);
// Precision and width specifiers must be int types.
_printf_p("%3$*5$f %2$.*4$f %1$*4$.*5$f\n", x, y, z, j, k);
}
1 2 3
3 1 2
1 2 1
abc def ghi
ghi abc def
333.333300 2.22 0.100
Baca juga
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk