Aracılığıyla paylaş


_tempnam, _wtempnam, tmpnam, _wtmpnam

Geçici dosyaları oluşturmak için kullandığınız adlar oluşturun.Bu işlevlerden bazılarının daha güvenli sürümleri mevcuttur; bkz. 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 
);

Parametreler

  • prefix
    Bekletilen tarafından döndürülen adlarına olacaktır dize _tempnam.

  • dir
    Hiçbir TMP ortam değişkeni ise veya TMP geçerli bir dizin değilse, dosya adında kullanılan yol.

  • str
    Adını tutacak ve işlev tarafından döndürülen adıyla aynı olacak işaretçi.Oluşturulan adı kaydetmek için uygun bir yoldur.

Dönüş Değeri

Bu işlevlerden her biri için üretilen ad bir işaretçi döndürür veya NULL bir hata varsa.Başarısızlık, çalışırsanız oluşabilir birden fazla TMP_MAX (STDIO bakın.H) çağrıları ile tmpnam veya kullanıyorsanız, _tempnam ve TMP ortam değişkenini ve belirtilen geçersiz dizin adı dir parametre.

[!NOT]

Tarafından döndürülen işaretçi tmpnam ve _wtmpnam iç statik arabellekleri için gidin.boş bu işaretçileri ayırması için çağrılmamalıdır.freetarafından ayrılan işaretçileri için çağrılması gereken _tempnam ve _wtempnam.

Notlar

Bu işlevlerden her biri şu anda mevcut olmayan bir dosyanın adını döndürür.tmpnamGeçerli çalışma dizini içinde benzersiz bir ad verir ve _tempnam geçerli olandan farklı bir dizine benzersiz bir ad üretilemedi sağlar.Bekletilen bir ters eğik çizgi ve yol bilgisi yok, \fname21 gibi bir dosya adı olduğunda, bu adın geçerli çalışma dizini için geçerli olup olmadığını gösterir unutmayın.

İçin tmpnam, bu oluşturulan dosya adında saklayabilirsiniz str.Yoksa str olan NULL, sonra tmpnam sonucu bir iç statik arabellek bırakır.Böylece bir sonraki çağrılar bu değeri yok.Tarafından oluşturulan ad tmpnam bir program tarafından oluşturulan dosya adının ve ilk çaðrýdan sonra oluşan tmpnam, ardışık sayılar temel 32 dosya uzantısı (.1-.vvu zaman TMP_MAX STDIO içinde.H 767'dir).

_tempnambenzersiz bir dosya adı aşağıdaki kurallara göre seçilen bir dizin oluşturur:

  • TMP ortam değişkeni tanımlı ve geçerli bir dizin adı için ayarlanmış benzersiz dosya adları TMP tarafından belirtilen dizin için oluşturulur.

  • TMP ortam değişkeni tanımlı değil veya yok, bir dizin adı için ayarlanmışsa, _tempnam kullanacağı dir parametresi için oluşturmak benzersiz adlar yolu olarak.

  • TMP ortam değişkeni tanımlı değil veya varolmayan bir dizin adı için ayarlanırsa ve varsa dir ya NULL ya da var olmayan bir dizin adını ayarlamak _tempnam geçerli çalışma dizini benzersiz adları oluşturmak için kullanır.Şu anda, her iki TMP ve dir yok, taşınmış, dizinlerin adlarını belirtmek _tempnam işlev çağrısı başarısız olur.

Tarafından döndürülen adı _tempnam bir birleşimi olacak prefix ve benzersiz bir dosya adı için belirtilen dizin oluşturmak için birleştirmek ardışık bir numara._tempnamherhangi bir uzantıya sahip dosya adları oluşturur._tempnamkullanan malloc alanı ayırmak için dosya adı; program, artık gerekli olmadığında bu alanı boşaltma için sorumludur.

_tempnamve tmpnam otomatik olarak çok baytlı karakter dizileri OEM kod sayfası göre tanıyor tanıtıcı çok baytlı karakter dizesi bağımsız değişkenleri uygun şekilde alınan işletim sisteminden._wtempnambir geniş karakter sürümü _tempnam; bağımsız değişkenleri ve dönüş değeri, _wtempnam geniş karakter dizeleridir._wtempnamve _tempnam durumlar dışında aynı şekilde davranır _wtempnam çok baytlı karakter dizeleri işlemez._wtmpnambir geniş karakter sürümü tmpnam; YAZMAÇ değeri _wtmpnam geniş karakter dizeleridir._wtmpnamve tmpnam durumlar dışında aynı şekilde davranır _wtmpnam çok baytlı karakter dizeleri işlemez.

Yoksa _DEBUG ve _CRTDBG_MAP_ALLOC tanımlanan, _tempnam ve _wtempnam yapılan çağrılar tarafından değiştirilen _tempnam_dbg ve _wtempnam_dbg.

Genel Metin Yordam Eşleşmeleri

TCHAR.H yordamı

_UNICODE & _MBCS tanımlanmamış

_MBCS tanımlanmış

_UNICODE tanımlanmış

_ttmpnam

tmpnam

tmpnam

_wtmpnam

_ttempnam

_tempnam

_tempnam

_wtempnam

Gereksinimler

Yordam

Gerekli başlık

_tempnam

<stdio.h>

_wtempnam, _wtmpnam

<stdio.h> or <wchar.h>

tmpnam

<stdio.h>

Ek uyumluluk bilgileri için Giriş altındaki Uyumluluk bölümüne bakın.

Örnek

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

.NET Framework Eşdeğeri

Uygulanamaz. Standart C işlevini çağırmak için PInvoke kullanın. Daha fazla bilgi için bkz. Platform Çağırma Örnekleri.

Ayrıca bkz.

Başvuru

Akış G/Ç

_getmbcp

malloc

_setmbcp

tmpfile

tmpfile_s