Sdílet prostřednictvím


_mktemp _wmktemp

Vytvoří jedinečný název souboru.Bezpečnější verze tyto funkce jsou k dispozici; see _mktemp_s _wmktemp_s.

char *_mktemp(
   char *template 
);
wchar_t *_wmktemp(
   wchar_t *template 
);
template <size_t size>
char *_mktemp(
   char (&template)[size]
); // C++ only
template <size_t size>
wchar_t *_wmktemp(
   wchar_t (&template)[size]
); // C++ only

Parametry

  • template
    Vzor názvu souboru.

Vrácená hodnota

Každá z těchto funkcí vrací ukazatel na upravené šabloně.Funkce vrátí NULL -li template je chybně utvořena nebo z dané šablony lze vytvořit další jedinečné názvy.

Poznámky

_mktemp Funkce vytvoří jedinečný název souboru změnou template argument._mktempautomaticky zpracovává argumenty řetězec vícebajtových znaků podle potřeby UZNÁVAJÍCE vícebajtové znakové sekvence podle vícebajtové znakové stránky právě používán spuštění systému._wmktempje verze celého znaku _mktemp; hodnota argumentu a návrat _wmktemp jsou celý znak řetězce._wmktempa _mktemp chovají jinak shodně s výjimkou, že _wmktemp nezpracovává vícebajtové znakové řetězce.

Obecný Text rutinní mapování

Rutina Tchar.h

_UNICODE a _MBCS není definován

_MBCS, definice

_UNICODE, definice

_tmktemp

_mktemp

_mktemp

_wmktemp

template Argument má tvar baseXXXXXX, kde base je nový název souboru, je součástí a každý x je zástupný symbol pro znak poskytnutých _mktemp.Každý zástupný znak v template musí být velkými písmeny X._mktempzachovává base a nahradí první koncové x abecední znak._mktempnahradí následující koncové x s pěti číslicemi hodnotu; Tato hodnota je jedinečné číslo identifikující volající proces, nebo s více podprocesy programy volající vlákno.

Každé úspěšné volání _mktemp upravuje template.V každé následné volání z stejný proces nebo podproces se stejným template argument, _mktemp kontroly názvů souborů, které odpovídají názvy vrácené _mktemp v předchozí volání.Pokud neexistuje žádný soubor pro zadaný název _mktemp vrátí název.Pokud existují soubory pro všechny dříve vráceny názvy, _mktemp nahrazením abecední znak používá název dříve vrácených s další malé písmeno, v pořadí od "a" až "z" vytvoří nový název.Například pokud base je:

fn

a hodnota pětimístná poskytnutých _mktemp je 12345, je vrácen název první:

fna12345

Pokud tento název se používá k vytvoření souboru FNA12345 a tento soubor stále existuje, další název vrácené volání stejný proces nebo podproces se stejným base pro template je:

fnb12345

Pokud FNA12345 neexistuje, je opět vrátil následující název:

fna12345

_mktempmůžete vytvořit maximálně 26 jedinečných názvů souborů pro jakékoli dané kombinace hodnot base a šablony.FNZ12345 tedy poslední jedinečný název _mktemp můžete vytvořit base a template hodnoty použité v tomto příkladu.

Při selhání errno je nastavena.Pokud template má neplatný formát (například méně než 6 X), errno je nastavena na EINVAL.Pokud _mktemp nelze vytvořit jedinečný název, protože všechny 26 možné názvy již existují, _mktemp nastaví šablony prázdný řetězec a vrátí EEXIST.

V jazyce C++ mají tyto funkce šablony přetížení, které vyvolávají novější, zabezpečené protějšků těchto funkcí.Další informace naleznete v tématu Přetížení šablony zabezpečení.

Požadavky

Rutina

Požadované záhlaví

_mktemp

<io.h>

_wmktemp

<io.h> nebo <wchar.h>

Další informace o kompatibilitě v tématu Compatibility v úvodu.

Příklad

// crt_mktemp.c
// compile with: /W3
/* The program uses _mktemp to create
 * unique filenames. It opens each filename
 * to ensure that the next name is unique.
 */

#include <io.h>
#include <string.h>
#include <stdio.h>
#include <errno.h>

char *template = "fnXXXXXX";
char *result;
char names[27][9];

int main( void )
{
   int i;
   FILE *fp;

   for( i = 0; i < 27; i++ )
   {
      strcpy_s( names[i], sizeof( names[i] ), template );
      /* Attempt to find a unique filename: */
      result = _mktemp( names[i] );  // C4996
      // Note: _mktemp is deprecated; consider using _mktemp_s instead
      if( result == NULL )
      {
         printf( "Problem creating the template\n" );
         if (errno == EINVAL)
         {
             printf( "Bad parameter\n");
         }
         else if (errno == EEXIST)
         {
             printf( "Out of unique filenames\n"); 
         }
      }
      else
      {
         fopen_s( &fp, result, "w" );
         if( fp != NULL )
            printf( "Unique filename is %s\n", result );
         else
            printf( "Cannot open %s\n", result );
         fclose( fp );
      }
   }
}
  
  

Ekvivalent v rozhraní .NET Framework

Nelze použít Použijte volání funkce standardní C, PInvoke. Další informace naleznete v tématu Příklady vyvolat platformu.

Viz také

Referenční dokumentace

Zpracování souborů

fopen _wfopen

_getmbcp

_getpid

_open, _wopen

_setmbcp

_tempnam, _wtempnam, tmpnam, _wtmpnam

tmpfile