_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.