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 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
fprintf, _fprintf_l, fwprintf, _fwprintf_l
scanf, _scanf_l, wscanf, _wscanf_l