Aracılığıyla paylaş


printf_s, _printf_s_l, wprintf_s, _wprintf_s_l

Standart çıkış akışı biçimlendirilmiş çıktıyı yazdır. Sürümleri bunlar printf, _printf_l, wprintf, _wprintf_l açıklandığı gibi güvenlik geliştirmeleri ile crt güvenlik özellikleri.

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]... 
);

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

Bir hata oluşursa, yazdırılan karakter veya negatif bir değer verir.

Notlar

printf_s İşlevi biçimlendirir ve bir dizi karakter ve değer standart çıkış akış için baskı stdout. Bağımsız değişkenler izlerseniz, biçimi dizesi, format dize bağımsız değişkenler için çıktı biçimini belirleyen özellikleri içermesi gerekir.

Arasındaki temel fark printf_s ve printf olan printf_s , ancak geçerli biçimlendirme karakterleri için biçim dizesi denetler printf yalnızca biçim dizesi null işaretçi olup olmadığını denetler. Ya da denetleme başarısız olursa, bir geçersiz parametre işleyicisi, açıklandığı gibi çağrılır Parametre doğrulama. Devam etmek için işlev verir -1 ve kümelerini yürütme izni varsa errno için EINVAL.

Hakkında bilgi için errno ve hata kodlarý _doserrno, hatano, _sys_errlist ve _sys_nerr.

printf_sve fprintf_s dışında aynı şekilde davranır printf_s çıktısına yazar stdout yerine bir hedef türü FILE. Daha fazla bilgi için bkz. fprintf_s, _fprintf_s_l, fwprintf_s, _fwprintf_s_l.

wprintf_sgeniş karakter sürümü printf_s; formatbir geniş karakter dizesidir. wprintf_sve printf_s akış ANSI modunda açılırsa aynı şekilde davranır. printf_sşu anda çıktı UNICODE akımına desteklemiyor.

Bu işlevleri sürümlerini _l sonek dışında geçerli iş parçacığı yerel geçirilen yerel ayar parametresi kullandıkları aynı.

Genel metin eşlemeleri yordamına girildi

TCHAR.H yordamına girildi

_UNICODE & _mbcs tanımlanmamış

Tanımlanan _mbcs

tanımlanan _UNICODE

_tprintf_s

printf_s

printf_s

wprintf_s

_tprintf_s_l

_printf_s_l

_printf_s_l

_wprintf_s_l

format Bağımsız değişkeni oluşur sıradan karakterler çıkış sıralarını ve (bağımsız izlerseniz, format) biçimlendirir. Sıradan karakterler ve çıkış sıralarını kopyalanır stdout , görünümlerini sırasına göre. Örneğin, satır

printf_s("Line one\n\t\tLine two\n"); 

Aşağıdaki çıktıyı verir

Line one
        Line two

Biçimlendirir her zaman yüzde işaretiyle başlar (%) ve soldan sağa okuyun. Zaman printf_s karşılaştığı ilk biçim belirtimini (varsa), sonra ilk bağımsız değişkenin değeri dönüştürür format ve buna bağlı olarak verir. İkinci biçim belirtimi dönüştürülür ve çıktı, ikinci bağımsız değişken olur ve böyle devam eder. Biçim belirtimleri sayısından daha fazla bağımsız değişken varsa, ek bağımsız değişkenler göz ardı edilir. Biçim belirtimleri için yeterli bağımsız değişken ise sonuçlar tanımsızdır.

Güvenlik NotuGüvenlik Notu

Emin format kullanıcı tanımlı bir dize değil.

Gereksinimler

Yordamı

Gerekli başlık

printf_s, _printf_s_l

<stdio.h>

wprintf_s, _wprintf_s_l

<stdio.h> veya <wchar.h>

Konsol desteklenen değil Windows Mağazası apps. Konsolu ile ilgili standart akış tanıtıcıları stdin, stdout, ve stderr, c çalışma zamanı işlevlerini de kullanılmadan önce yönlendirilecek Windows Mağazası apps. Ek uyumluluk bilgileri için bkz: Uyumluluk giriş.

Örnek

// 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);

}

Ö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:   0012FF78

.NET Framework Eşdeğeri

Ayrıca bkz.

Başvuru

Kayan nokta türü desteği

G/ç

Yerel ayar

fopen, _wfopen

fprintf, _fprintf_l, fwprintf, _fwprintf_l

scanf, _scanf_l, wscanf, _wscanf_l

sprintf, _sprintf_l, swprintf, _swprintf_l, __swprintf_l

vprintf işlevleri