_sprintf_p、 _sprintf_p_l、 _swprintf_p、 _swprintf_p_l
字串格式化的資料寫入指定格式字串中使用的參數順序的能力。
int _sprintf_p(
char *buffer,
size_t sizeOfBuffer,
const char *format [,
argument] ...
);
int _sprintf_p_l(
char *buffer,
size_t sizeOfBuffer,
const char *format,
locale_t locale [,
argument] ...
);
int _swprintf_p(
wchar_t *buffer,
size_t sizeOfBuffer,
const wchar_t *format [,
argument]...
);
int _swprintf_p_l(
wchar_t *buffer,
size_t sizeOfBuffer,
const wchar_t *format,
locale_t locale [,
argument] …
);
參數
buffer
輸出的儲存位置sizeOfBuffer
要儲存的字元的最大數目。format
控制項的格式字串argument
選擇性引數locale
若要使用地區設定。
如需詳細資訊,請參閱格式規格。
傳回值
書寫,字元或 – 1,如果發生錯誤的數目。
備註
_sprintf_p 函式格式化,並儲存起來一系列字元與數值中的buffer。 每個argument (如果有的話) 會轉換並輸出傳送至對應的格式規格,以根據format。 一般字元所組成的格式,與具有相同的表單,並作為format引數的printf_p。 A NULL字元會附加之後寫入的最後一個字元。 如果複製之間的重疊的字串,這個行為未定義。 之間的差異_sprintf_p和sprintf_s的_sprintf_p支援位置參數,它可讓您在格式字串中指定的引數所使用的順序。 如需詳細資訊,請參閱 printf_p 位置參數。
_swprintf_p寬字元版本的_sprintf_p。 指標引數去_swprintf_p是寬字元字串。 偵測編碼中的錯誤_swprintf_p ,可能會有所不同,在_sprintf_p。 _swprintf_p與fwprintf_p運作方式完全相同,除了_swprintf_p字串,而不是目的型別,將輸出FILE,以及_swprintf_p需要count參數來指定要寫入的字元的最大數目。 使用這些函式的版本_l尾碼完全相同,不同之處在於它們使用傳遞中而不是目前執行緒的地區設定的地區設定參數。
_sprintf_p傳回儲存在中的位元組數目buffer,不計算終止NULL字元。 _swprintf_p傳回的寬字元數目儲存在buffer,不計算終止NULL寬字元。 如果buffer或format是空值的指標,或如果格式字串包含無效的格式字元,不正確的參數處理常式會叫用,如所述參數驗證。 如果執行,則允許繼續執行,這些函數會傳回-1,並設定errno到EINVAL。
泛用文字常式對應
TCHAR。H 常式 |
_UNICODE & 未定義的 _MBCS |
定義的 _MBCS |
定義 _unicode 之後 |
---|---|---|---|
_stprintf_p |
_sprintf_p |
_sprintf_p |
_swprintf_p |
_stprintf_p_l |
_sprintf_p_l |
_sprintf_p_l |
_swprintf_p_l |
需求
常式 |
所需的標頭 |
---|---|
_sprintf_p, _sprintf_p_l |
<stdio.h> |
_swprintf_p, _swprintf_p_l |
<stdio.h> 或者 <wchar.h> |
其他的相容性資訊,請參閱相容性在簡介中。
範例
// crt_sprintf_p.c
// This program uses _sprintf_p to format various
// data and place them in the string named buffer.
//
#include <stdio.h>
int main( void )
{
char buffer[200],
s[] = "computer", c = 'l';
int i = 35,
j;
float fp = 1.7320534f;
// Format and print various data:
j = _sprintf_p( buffer, 200,
" String: %s\n", s );
j += _sprintf_p( buffer + j, 200 - j,
" Character: %c\n", c );
j += _sprintf_p( buffer + j, 200 - j,
" Integer: %d\n", i );
j += _sprintf_p( buffer + j, 200 - j,
" Real: %f\n", fp );
printf( "Output:\n%s\ncharacter count = %d\n",
buffer, j );
}
// crt_swprintf_p.c
// This is the wide character example which
// also demonstrates _swprintf_p returning
// error code.
#include <stdio.h>
#define BUFFER_SIZE 100
int main( void )
{
wchar_t buffer[BUFFER_SIZE];
int len;
len = _swprintf_p(buffer, BUFFER_SIZE, L"%2$s %1$d",
0, L" marbles in your head.");
_printf_p( "Wrote %d characters\n", len );
// _swprintf_p fails because string contains WEOF (\xffff)
len = _swprintf_p(buffer, BUFFER_SIZE, L"%s",
L"Hello\xffff world" );
_printf_p( "Wrote %d characters\n", len );
}
.NET Framework 對等用法
請參閱
參考
_fprintf_p、 _fprintf_p_l、 _fwprintf_p、 _fwprintf_p_l
fprintf、 _fprintf_l、 fwprintf、 _fwprintf_l
_printf_p、 _printf_p_l、 _wprintf_p、 _wprintf_p_l
printf、 _printf_l、 wprintf、 _wprintf_l
scanf、 _scanf_l、 wscanf、 _wscanf_l
sscanf、 _sscanf_l、 swscanf、 _swscanf_l