printf
, _printf_l
, wprintf
, _wprintf_l
Biçimlendirilmiş çıkışı standart çıkış akışına yazdırır. Bu işlevlerin daha güvenli sürümleri mevcuttur; bkz. printf_s
, _printf_s_l
, wprintf_s
. _wprintf_s_l
Sözdizimi
int printf(
const char *format [,
argument]...
);
int _printf_l(
const char *format,
_locale_t locale [,
argument]...
);
int wprintf(
const wchar_t *format [,
argument]...
);
int _wprintf_l(
const wchar_t *format,
_locale_t locale [,
argument]...
);
Parametreler
format
Biçim denetimi.
argument
İsteğe bağlı bağımsız değişkenler.
locale
Kullanılacak yerel ayar.
Dönüş değeri
Yazdırılan karakter sayısını veya hata oluşursa negatif bir değer döndürür. ise format
NULL
, parametre doğrulamasında açıklandığı gibi geçersiz parametre işleyicisi çağrılır. Yürütmenin devam etmesi için izin verilirse, işlevi -1 döndürür ve olarak EINVAL
ayarlanırerrno
. içinde (0xFFFF) ile karşılaşılırsa EOF
argument
işlev -1 döndürür.
ve hata kodları hakkında errno
bilgi için bkz.errno
, _doserrno
, _sys_errlist
ve _sys_nerr
.
Açıklamalar
İşlev, printf
bir dizi karakteri ve değeri standart çıkış akışı stdout
olan 'a biçimlendirip yazdırır. Bağımsız değişkenler dizeyi format
izlerse, dize bağımsız format
değişkenlerin çıkış biçimini belirleyen belirtimler içermelidir. printf
ve fprintf
aynı şekilde davranır, ancak çıkış printf
stdout
türüne FILE
değil hedefine yazar.
wprintf
, öğesinin printf
format
geniş karakterli bir sürümüdür; geniş karakterli bir dizedir. wprintf
ve printf
akış ANSI modunda açıldığında aynı şekilde davranır. printf
şu anda UNICODE akışına çıkışı desteklemez.
Bu işlevlerin sonekli _l
sürümleri aynıdır, ancak geçerli iş parçacığı yerel ayarı yerine geçirilen yerel ayar parametresini kullanırlar.
Bağımsız format
değişken sıradan karakterler, kaçış dizileri ve (bağımsız değişkenler izleniyorsa format
) biçim belirtimlerinden oluşur. Normal karakterler ve kaçış dizileri, görünüm sırasına stdout
göre kopyalanır. Örneğin, satır:
printf("Line one\n\t\tLine two\n");
çıktıyı üretir:
Line one
Line two
Biçim belirtimleri her zaman yüzde işaretiyle (%) başlar ve soldan sağa okunur. printf
İlk biçim belirtimi (varsa) ile karşılaştığında, sonraki ilk bağımsız değişkenin format
değerini dönüştürür ve buna göre çıkışını verir. İkinci biçim belirtimi, ikinci bağımsız değişkenin dönüştürülmesine ve çıkışına neden olur, vb. Biçim belirtimlerinden daha fazla bağımsız değişken varsa, ek bağımsız değişkenler yoksayılır. Tüm biçim belirtimleri için yeterli bağımsız değişken yoksa sonuçlar tanımlanmamıştır.
Önemli
format
Kullanıcı tanımlı bir dize olmadığından emin olun.
Genel metin yordamı eşlemeleri
Tchar.h olağan |
_UNICODE ve _MBCS tanımlanmadı |
_MBCS tanımlanan |
_UNICODE tanımlanan |
---|---|---|---|
_tprintf |
printf |
printf |
wprintf |
_tprintf_l |
_printf_l |
_printf_l |
_wprintf_l |
Gereksinimler
Yordam | Gerekli başlık |
---|---|
printf , _printf_l |
<stdio.h> |
wprintf , _wprintf_l |
<stdio.h> veya <wchar.h> |
Konsol Evrensel Windows Platformu (UWP) uygulamalarında desteklenmez. C çalışma zamanı işlevlerinin UWP uygulamalarında kullanabilmesi için önce konsolu stdin
, , stdout
ve stderr
ile ilişkilendirilmiş standart akış tanıtıcılarının yeniden yönlendirilmesi gerekir. Daha fazla uyumluluk bilgisi için bkz . Uyumluluk.
Önemli
Windows 10 sürüm 2004 'den (derleme 19041) printf
başlayarak, işlev ailesi yuvarlama için IEEE 754 kurallarına göre tam olarak temsil edilebilir kayan nokta numaraları yazdırır. Windows'un önceki sürümlerinde, '5' ile biten tam olarak temsil edilebilir kayan nokta sayıları her zaman yukarı yuvarlanırdı. IEEE 754, en yakın çift rakama ("Bankacı Yuvarlama" olarak da bilinir) yuvarlamaları gerektiğini belirtir. Örneğin, hem hem de printf("%1.0f", 1.5)
printf("%1.0f", 2.5)
2'ye yuvarlanmalıdır. Daha önce 1,5 2'ye, 2,5 ise 3'e yuvarlardı. Bu değişiklik yalnızca tam olarak temsil edilebilir sayıları etkiler. Örneğin, 2,35 (bellekte temsil edildiğinde 2,3500000000000000000008'e daha yakındır) 2,4'e kadar yuvarlanmaya devam eder. Bu işlevler tarafından yapılan yuvarlama artık tarafından fesetround
ayarlanan kayan nokta yuvarlama moduna da dikkat eder. Daha önce yuvarlama her zaman davranışı seçmişti FE_TONEAREST
. Bu değişiklik yalnızca Visual Studio 2019 sürüm 16.2 ve üzeri kullanılarak oluşturulan programları etkiler. Eski kayan nokta yuvarlama davranışını kullanmak için ile legacy_stdio_float_rounding.obj
bağlayın.
Örnek
// crt_printf.c
// This program uses the printf and wprintf functions
// to produce formatted output.
#include <stdio.h>
int main( void )
{
char ch = 'h',
*string = "computer";
wchar_t wch = L'w',
*wstring = L"Unicode";
int count = -9234;
double fp = 251.7366;
// Display integers
printf( "Integer formats:\n"
" Decimal: %d Justified: %.6d "
"Unsigned: %u\n",
count, count, count, count );
// Display decimals
printf( "Decimal %d as:\n Hex: %Xh "
"C hex: 0x%x Octal: %o\n",
count, count, count, count );
// Display in different radixes
printf( "Digits 10 equal:\n Hex: %i "
"Octal: %i Decimal: %i\n",
0x10, 010, 10 );
// Display characters
printf("Characters in field (1):\n"
"%10c%5hc%5C%5lc\n",
ch, ch, wch, wch);
wprintf(L"Characters in field (2):\n"
L"%10C%5hc%5c%5lc\n",
ch, ch, wch, wch);
// Display strings
printf("Strings in field (1):\n%25s\n"
"%25.4hs\n %S%25.3ls\n",
string, string, wstring, wstring);
wprintf(L"Strings in field (2):\n%25S\n"
L"%25.4hs\n %s%25.3ls\n",
string, string, wstring, wstring);
// Display real numbers
printf("Real numbers:\n %f %.2f %e %E\n",
fp, fp, fp, fp );
// Display pointer
printf( "\nAddress as: %p\n", &count);
}
Örnek çıktı
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: 0012FF3C
Ayrıca bkz.
Biçim belirtimi söz dizimi: printf
ve wprintf
işlevleri
Matematik ve kayan nokta desteği
Akış G/Ç
Yerel ayar
fopen
, _wfopen
_fprintf_p
, _fprintf_p_l
, _fwprintf_p
, _fwprintf_p_l
scanf
, _scanf_l
, wscanf
, _wscanf_l
sprintf
, _sprintf_l
, swprintf
, _swprintf_l
, , __swprintf_l
vprintf
işlevleri
_set_output_format