tmpnam_s, _wtmpnam_s
Gere nomes que você pode usar para criar arquivos temporários.Estas são as versões do tmpnam e _wtmpnam com aprimoramentos de segurança, conforme descrito em Recursos de segurança no CRT.
errno_t tmpnam_s(
char * str,
size_t sizeInChars
);
errno_t _wtmpnam_s(
wchar_t *str,
size_t sizeInChars
);
template <size_t size>
errno_t tmpnam_s(
char (&str)[size]
); // C++ only
template <size_t size>
errno_t _wtmpnam_s(
wchar_t (&str)[size]
); // C++ only
Parâmetros
[out]str
Ponteiro que conterá o nome gerado.[in]sizeInChars
O tamanho do buffer em caracteres.
Valor de retorno
Ambas as funções retornam 0 de êxito ou de um número de erro em caso de falha.
Condições de erro
str |
sizeInChars |
Valor de retorno |
Conteúdo destr |
NULL |
any |
EINVAL |
não modificado |
não NULL (aponta para memória válido) |
muito curto |
ERANGE |
não modificado |
Se str é NULL, o manipulador de parâmetro inválido é invocado, conforme descrito em Validação de parâmetro.Se a execução terá permissão para continuar, essas funções definir errno para EINVAL e retornar EINVAL.
Comentários
Cada uma dessas funções retorna o nome de um arquivo que não existe atualmente.tmpnam_sRetorna um nome exclusivo no diretório de trabalho atual.Observe que quando um nome de arquivo é antecedidos com uma barra invertida e nenhuma informação de caminho, como, por exemplo, \fname21, isso indica que o nome é válido para o diretório de trabalho atual.
Para tmpnam_s, você pode armazenar esse nome de arquivo gerado no str.O comprimento máximo de uma seqüência de caracteres retornada por tmpnam_s é L_tmpnam_s, definido em STDIO.H.Se str é NULL, em seguida, tmpnam_s deixa o resultado em um buffer interno de estático.Assim, todas as chamadas subseqüentes destruam este valor.O nome gerado por tmpnam_s consiste em um nome de arquivo gerado pelo programa e, após a primeira chamada para tmpnam_s, uma extensão de arquivo de números seqüenciais em 32 base (when. 1-.1vvvvvu, TMP_MAX_S em STDIO.H é INT_MAX).
tmpnam_smanipula automaticamente os argumentos de seqüência de caracteres multibyte conforme apropriado, reconhecendo as seqüências de caracteres multibyte de acordo com a página de código OEM obtidas a partir do sistema operacional._wtmpnam_sé uma versão de caractere largo de tmpnam_s; o valor de argumento e o retorno de _wtmpnam_s são seqüências de caracteres largos._wtmpnam_se tmpnam_s se comportam de forma idêntica, exceto que _wtmpnam_s não processa as seqüências de caracteres de multibyte.
No C++, a utilização dessas funções é simplificado pela sobrecargas do modelo; os métodos sobrecarregados podem inferir comprimento do buffer automaticamente, eliminando a necessidade de especificar um argumento de tamanho.Para obter mais informações, consulte Proteger Overloads de modelo.
Mapeamentos de rotina de texto genérico
TCHAR.Rotina H |
_ Unicode & _ MBCS do arquivo não definido |
_ MBCS do arquivo definido |
_ Unicode definido |
---|---|---|---|
_ttmpnam_s |
tmpnam_s |
tmpnam_s |
_wtmpnam_s |
Requisitos
Rotina |
Cabeçalho necessário |
---|---|
tmpnam_s |
<stdio.h> |
_wtmpnam_s |
<stdio.h> ou <wchar.h> |
Para obter informações adicionais de compatibilidade, consulte compatibilidade na introdução.
Exemplo
// crt_tmpnam_s.c
// This program uses tmpnam_s to create a unique filename in the
// current working directory.
//
#include <stdio.h>
#include <stdlib.h>
int main( void )
{
char name1[L_tmpnam_s];
errno_t err;
int i;
for (i = 0; i < 15; i++)
{
err = tmpnam_s( name1, L_tmpnam_s );
if (err)
{
printf("Error occurred creating unique filename.\n");
exit(1);
}
else
{
printf( "%s is safe to use as a temporary file.\n", name1 );
}
}
}
Equivalência do .NET Framework
Não aplicável. Para chamar a função c padrão, use PInvoke. Para obter mais informações, consulte Exemplos de invocação de plataforma.