Share via


tmpnam_s, _wtmpnam_s

gerar nomes, que você pode usar para criar arquivos temporários.Essas são sistema autônomo versões de tmpnam e _wtmpnam com aprimoramentos de segurança conforme descrito em Aprimoramentos 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 dimensionar do buffer em caracteres.

Valor de retorno

Ambas as funções de retorno 0 de êxito ou um número do erro de falha.

Condições de erro

str

sizeInChars

Valor de retorno

Sumário de str

NULL

any

EINVAL

não modificado

not NULL (pontos de memória válido)

muito curto

ERANGE

não modificado

If str é NULL, o manipulador de parâmetro inválido é chamado, conforme descrito em Validação de parâmetro. Se a execução for permitida para continuar, essas funções conjunto errno para EINVAL e retornar EINVAL.

Comentários

Cada uma dessas funções retorna o nome de um arquivo que não existe no momento.tmpnam_s Retorna um nome exclusivo no diretório de trabalho corrente. Observe que quando um nome de arquivo é pré-pendente com uma barra invertida e sem informações de caminho, sistema autônomo \fname21, isso indica que o nome é válido para a diretório de trabalho corrente.

For 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 no STDIO.H. If str é NULL, em seguida, tmpnam_s deixa o resultado em um buffer interno estático. Assim, todas as chamadas subseqüentes destruam este valor.O nome gerado por tmpnam_s consiste de um nome de arquivo gerado pelo programa e, após a primeira telefonar para tmpnam_s, uma extensão de arquivo dos números seqüenciais 32 base (0,1-.1vvvvvu quando TMP_MAX_S em STDIO.H é INT_MAX).

tmpnam_s trata automaticamente sistema autônomo argumentos de seqüência de caractere multibyte conforme apropriado, reconhecendo seqüências de caractere 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 da tmpnam_s; valor de argumento e retornar _wtmpnam_s são seqüências de caracteres largos. _wtmpnam_s e tmpnam_s tenham comportamento idêntico, exceto que _wtmpnam_s não trata as seqüências de caractere de multibyte.

No C++, usando essas funções é simplificado pela sobrecargas de modelo; sobrecargas de podem inferir comprimento do buffer automaticamente, eliminando a necessidade de especificar um argumento de dimensionar.Para obter mais informações, consulte Proteger overloads de modelo.

Mapeamentos de rotina de texto genérica

Rotina TCHAR.H

_UNICODE & _MBCS não definido

_MBCS 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 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 );
      }
   }  
}

Equivalente do NET Framework

Não aplicável. Para telefonar a função C padrão, use PInvoke. Para obter mais informações, consulte Exemplos de invocação de plataforma.

Consulte também

Referência

Fluxo de E/S

_getmbcp

malloc

_setmbcp

tmpfile_s