_tempnam, _wtempnam, tmpnam, _wtmpnam
Gere nomes que você pode usar para criar arquivos temporários.Versões mais seguras do que algumas dessas funções estão disponíveis; see 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 seja antecedidos nomes retornados por _tempnam.dir
O caminho usado no nome do arquivo se não houver nenhuma variável de ambiente TMP, ou se TMP não é um diretório válido.str
Ponteiro que conterá o nome gerado e será idêntico ao nome retornado pela função.Isso é 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.Falha pode ocorrer se você tentar mais de TMP_MAX (consulte STDIO.H) chamadas com tmpnam ou se você usar _tempname há um nome de diretório inválido especificado na variável de ambiente TMP e na dir parâmetro.
Observação |
---|
Os ponteiros retornados por tmpnam e _wtmpnam aponte para buffers internos de estáticos.livre não deve ser chamado para desalocar os ponteiros.freeprecisa 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 atualmente.tmpnamRetorna um nome exclusivo no diretório de trabalho atual e _tempnam permite gerar um nome exclusivo em um diretório diferente do 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, você pode armazenar esse nome de arquivo gerado no str.Se str é NULL, em seguida, tmpnam deixa o resultado em um buffer interno de estático.Assim, todas as chamadas subseqüentes destruam este valor.O nome gerado por tmpnam consiste em um nome de arquivo gerado pelo programa e, após a primeira chamada para tmpnam, uma extensão de arquivo de números seqüenciais em 32 base (when. 1-.vvu, TMP_MAX em STDIO.H é 32.767).
_tempnamirá gerar um nome de arquivo exclusivo para um diretório escolhido pelas seguintes regras:
Se a variável de ambiente TMP é definida e definida como um nome de diretório 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 ele estiver definido como o nome de um diretório que não existe, _tempnam usará o dir parâmetro como o caminho para o qual ele irá gerar nomes exclusivos.
Se a variável de ambiente TMP não está definida ou se ele estiver definido como o nome de um diretório que não existe e se dir é NULL ou defina como o nome de um diretório que não existe, _tempnam usará o diretório de trabalho atual para gerar nomes exclusivos.Atualmente, se ambos os TMP e dir especificar nomes de diretórios não existirem, o _tempnam a chamada de função falhará.
O nome retornado por _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._tempnamgera nomes de arquivo com nenhuma extensão._tempnamusa malloc para alocar espaço para nome de arquivo; o programa é responsável por liberar esse espaço quando ele não é mais necessária.
_tempname tmpnam obtidos automaticamente a argumentos de seqüência de caracteres multibyte alça conforme apropriado, reconhecendo as seqüências de caracteres multibyte de acordo com a página de código OEM do sistema operacional._wtempnamé uma versão de caractere largo de _tempnam; os argumentos e o valor de retorno de _wtempnam são seqüências de caracteres largos._wtempname _tempnam se comportam de forma idêntica, exceto que _wtempnam não processa as seqüências de caracteres de multibyte._wtmpnamé uma versão de caractere largo de tmpnam; o valor de argumento e o retorno de _wtmpnam são seqüências de caracteres largos._wtmpname tmpnam se comportam de forma idêntica, exceto que _wtmpnam não processa as seqüências de caracteres de multibyte.
Se _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érico
TCHAR.Rotina H |
_ Unicode & _ MBCS do arquivo não definido |
_ MBCS do arquivo 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 de 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);
}
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.