Partilhar via


_tempnam, _wtempnam, tmpnam, _wtmpnam

gerar nomes, que você pode usar para criar arquivos temporários.Versões mais seguras de algumas dessas funções estão disponível; consulte tmpnam_s, _wtmpnam_s.

char *_tempnam(
   const char *dir,
   const char *prefix 
);
wchar_t *_wtempnam(
   const wchar_t *dir,
   const wchar_t *prefix 
);
char *tmpnam(
   char *str 
);
wchar_t *_wtmpnam(
   wchar_t *str 
);

Parâmetros

  • prefix
    A seqüência de caracteres que será pré-pendente para nomes retornados por _tempnam.

  • dir
    O caminho usado no nome de arquivo se não houver nenhuma variável de ambiente TMP ou se TMP não for um diretório válido.

  • str
    Ponteiro que conterá o nome gerado e será idêntico ao nome retornado pela função.Essa é uma maneira conveniente para salvar o nome gerado.

Valor de retorno

Cada uma dessas funções retorna um ponteiro para o nome gerado ou NULL Se houver uma falha. Failure can occur if you attempt more than TMP_MAX (see STDIO.H) calls with tmpnam or if you use _tempnamand there is an invalid directory name specified in the TMP environment variable and in the dir parameter.

Observação:

Os ponteiros retornados por tmpnam e _wtmpnam aponte para buffers internos estático. disponível não deve ser chamado para desalocar os ponteiros.free precisa ser chamado para ponteiros alocados pelo _tempnam e _wtempnam.

Comentários

Cada uma dessas funções retorna o nome de um arquivo que não existe no momento.tmpnam Retorna um nome exclusivo no diretório de trabalho corrente e _tempnam permite gerar um nome exclusivo em um diretório diferente do 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, você pode armazenar esse nome de arquivo gerado no str. If str é NULL, em seguida, tmpnam deixa o resultado em um buffer interno estático. Assim, todas as chamadas subseqüentes destruam este valor.O nome gerado por tmpnam consiste de um nome de arquivo gerado pelo programa e, após a primeira telefonar para tmpnam, uma extensão de arquivo dos números seqüenciais 32 base (0,1-.vvu quando TMP_MAX em STDIO.H é 32.767).

_tempnam irá gerar um nome de arquivo exclusivo para um diretório escolhido pelas seguintes regras:

  • Se a variável de ambiente TMP é definida e conjunto para um nome de pasta válido, nomes de arquivo exclusivo serão gerados para o diretório especificado por TMP.

  • Se a variável de ambiente TMP não for definida ou se for conjunto sistema autônomo o nome de um diretório não existe, _tempnam usará o dir parâmetro sistema autônomo o caminho para o qual ela irá gerar nomes exclusivos.

  • Se a variável de ambiente TMP não for definida ou se estiver definido como o nome de um diretório não existe e se dir está NULL ou definida como o nome de um diretório não existe _tempnam o <a0></a0> usará a diretório de trabalho corrente para gerar nomes exclusivos. No momento, se TMP e dir especificar nomes de diretórios não existirem, o _tempnam telefonar de função falhará.

O nome retornado pela _tempnam será uma concatenação do prefix e um número seqüencial, que, serão combinados para criar um nome de arquivo exclusivo para o diretório especificado. _tempnam gera nomes de arquivo com nenhuma extensão. _tempnam usa malloc alocar espaço para nome de arquivo; o programa é responsável pela liberação de espaço neste quando não é mais necessário.

_tempnam e tmpnam automaticamente identificador de seqüência de caractere multibyte argumentos conforme apropriado, reconhecendo seqüências de caractere multibyte de acordo com a página de código OEM obtidas a partir do sistema operacional. _wtempnam é uma versão de caractere largo da _tempnam; os argumentos e o valor retornado _wtempnam são seqüências de caracteres largos. _wtempnam e _tempnam tenham comportamento idêntico, exceto que _wtempnam não trata as seqüências de caractere de multibyte. _wtmpnam é uma versão de caractere largo da tmpnam; valor de argumento e retornar _wtmpnam são seqüências de caracteres largos. _wtmpnam e tmpnam tenham comportamento idêntico, exceto que _wtmpnam não trata as seqüências de caractere de multibyte.

If _DEBUG e _CRTDBG_MAP_ALLOC são definidos, _tempnam e _wtempnam são substituídos por chamadas para _tempnam_dbg e _wtempnam_dbg.

Mapeamentos de rotina de texto genérica

Rotina TCHAR.H

_UNICODE & _MBCS não definido

_MBCS definido

_UNICODE definido

_ttmpnam

tmpnam

tmpnam

_wtmpnam

_ttempnam

_tempnam

_tempnam

_wtempnam

Requisitos

Rotina

Cabeçalho necessário

_tempnam

<stdio.h>

_wtempnam, _wtmpnam

<stdio.h> ou <wchar.h>

tmpnam

<stdio.h>

Para obter informações adicionais compatibilidade, consulte Compatibilidade na introdução.

Exemplo

// crt_tempnam.c
// compile with: /W3
// This program uses tmpnam to create a unique filename in the
// current working directory, then uses _tempnam to create 
// a unique filename with a prefix of stq. 

#include <stdio.h>
#include <stdlib.h>

int main( void )
{   
   char* name1 = NULL;
   char* name2 = NULL;

   // Create a temporary filename for the current working directory: 
   if( ( name1 = tmpnam( NULL ) ) != NULL ) // C4996
   // Note: tmpnam is deprecated; consider using tmpnam_s instead
      printf( "%s is safe to use as a temporary file.\n", name1 );
   else
      printf( "Cannot create a unique filename\n" );

   // Create a temporary filename in temporary directory with the
   // prefix "stq". The actual destination directory may vary
   // depending on the state of the TMP environment variable and
   // the global variable P_tmpdir.   

   if( ( name2 = _tempnam( "c:\\tmp", "stq" ) ) != NULL )
      printf( "%s is safe to use as a temporary file.\n", name2 ); 
   else
      printf( "Cannot create a unique filename\n" );

   // When name2 is no longer needed :   
   if(name2)
     free(name2);
     
}

\s1gk. is safe to use as a temporary file. C:\DOCUME~1\user\LOCALS~1\Temp\2\stq2 is safe to use as a temporary file.

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

tmpfile_s