Aracılığıyla paylaş


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 formatNULL, 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 EINVALayarlanırerrno. içinde (0xFFFF) ile karşılaşılırsa EOFargumentişlev -1 döndürür.

ve hata kodları hakkında errno bilgi için bkz.errno , _doserrno, _sys_errlistve _sys_nerr.

Açıklamalar

İşlev, printf bir dizi karakteri ve değeri standart çıkış akışı stdoutolan '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ış printfstdout türüne FILEdeğil hedefine yazar.

wprintf, öğesinin printfformat 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 Rutin _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, , stdoutve stderrile 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 fesetroundayarlanan 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.objbağ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