Função RtlStringCchPrintfA (ntstrsafe.h)
As funções RtlStringCchPrintfW e RtlStringCchPrintfA criam uma cadeia de caracteres contada por caracteres, com formatação baseada em informações de formatação fornecidas.
Sintaxe
NTSTRSAFEDDI RtlStringCchPrintfA(
[out] NTSTRSAFE_PSTR pszDest,
[in] size_t cchDest,
[in] NTSTRSAFE_PCSTR pszFormat,
...
);
Parâmetros
[out] pszDest
Um ponteiro para um buffer fornecido pelo chamador que recebe uma cadeia de caracteres formatada e terminada em nulo. A função cria essa cadeia de caracteres com base na cadeia de caracteres de formatação fornecida por pszFormat e na lista de argumentos da função.
[in] cchDest
O tamanho do buffer de destino, em caracteres. O buffer deve ser grande o suficiente para conter a cadeia de caracteres formatada mais o caractere nulo de terminação. O número máximo de caracteres permitido é NTSTRSAFE_MAX_CCH.
[in] pszFormat
Um ponteiro para uma cadeia de caracteres de texto terminada em nulo que contém diretiva s de formataçãoestilo printf.
...
Uma lista de argumentos que são interpretados pela função, com base em diretivas de formatação contidas na cadeia de caracteres pszFormat.
Valor de retorno
A função retorna um dos valores NTSTATUS listados na tabela a seguir. Para obter informações sobre como testar valores NTSTATUS, consulte Usando valores NTSTATUS.
Código de retorno | Descrição |
---|---|
|
Esse êxito status significa que os dados de origem estavam presentes, a cadeia de caracteres foi criada sem truncamento e o buffer de destino resultante foi encerrado em nulo. |
|
Esse aviso status significa que a operação não foi concluída devido ao espaço insuficiente no buffer de destino. O buffer de destino contém uma versão truncada da cadeia de caracteres de saída. |
|
Esse erro status significa que a função recebeu um parâmetro de entrada inválido. Para obter mais informações, consulte o parágrafo a seguir.
A função retorna o valor STATUS_INVALID_PARAMETER quando:
|
Observações
rtlStringCchPrintfW e rtlStringCchPrintfA devem ser usados em vez das seguintes funções:
- sprintf
- swprintf
- _snprintf
- _snwprintf
Use rtlStringCchPrintfW para lidar com cadeias de caracteres Unicode e rtlStringCchPrintfA para lidar com cadeias de caracteres ANSI. O formulário que você usa depende de seus dados.
Tipo de dados de cadeia de caracteres | Literal de cadeia de caracteres | Função |
---|---|---|
WCHAR | L"string" | rtlStringCchPrintfW |
char | "string" | rtlStringCchPrintfA |
Se pszDest e pszFormat apontar para cadeias de caracteres sobrepostas ou se alguma cadeia de caracteres de argumento se sobrepor, o comportamento da função será indefinido.
Nem pszFormat nem pszDest podem ser NULL. Se você precisar lidar com valores de ponteiro de cadeia de caracteres NULL, use RtlStringCchPrintfEx.
Exemplos
O exemplo a seguir mostra um uso simples de rtlStringCchPrintfW usando quatro argumentos.
WCHAR pszDest[30];
size_t cchDest = 30;
LPCWSTR pszFormat = L"%s %d + %d = %d.";
WCHAR* pszTxt = L"The answer is";
NTSTATUS status =
RtlStringCchPrintfW(pszDest, cchDest, pszFormat, pszTxt, 1, 2, 3);
A cadeia de caracteres resultante é "A resposta é 1 + 2 = 3". Ele está contido no buffer em pszDest.
Para obter mais informações sobre as funções de cadeia de caracteres seguras, consulte Usando funções de cadeia de caracteres seguras.
Requisitos
Requisito | Valor |
---|---|
de cliente com suporte mínimo | Disponível a partir do Windows XP com Service Pack 1 (SP1). |
da Plataforma de Destino | Área de trabalho |
cabeçalho | ntstrsafe.h (inclua Ntstrsafe.h) |
biblioteca | Ntstrsafe.lib |
IRQL | Se as cadeias de caracteres que estão sendo manipuladas estiverem sempre residentes na memória, caso contrário, PASSIVE_LEVEL |