Aracılığıyla paylaş


_tempnam, _wtempnam, tmpnam, _wtmpnam

Geçici dosyalar oluşturmak için kullanabileceğiniz adlar oluşturun. Bu işlevlerden bazılarının daha güvenli sürümleri mevcuttur; bkz. tmpnam_s, _wtmpnam_s.

Sözdizimi

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
tarafından _tempnamdöndürülen adlara eklenen dize.

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

str
oluşturulan adı tutan işaretçi, işlev tarafından döndürülen adla aynı. Bu, oluşturulan adı kaydetmenin kullanışlı bir yoludur.

Dönüş değeri

Bu işlevlerin her biri, oluşturulan ada veya NULL bir hata olduğunda bir işaretçi döndürür. Daha fazlasını TMP_MAX denerseniz hata oluşabilir (bkz. STDIO. H) ile tmpnam veya kullanıyorsanız _tempnam ve ortam değişkeninde ve parametresinde TMP belirtilen geçersiz bir dizin adı varsa çağrıları dir .

Dekont

tarafından tmpnam döndürülen işaretçiler ve _wtmpnam iç statik arabelleklere işaret eder. free bu işaretçileri serbest bırakmak için çağrılmamalıdır. freeve _wtempnamtarafından _tempnam ayrılan işaretçiler için çağrılmalıdır.

Açıklamalar

Bu işlevlerin her biri, şu anda mevcut olmayan bir dosyanın adını döndürür. tmpnam tarafından GetTempPathWdöndürülen belirtilen Windows geçici dizininde benzersiz bir ad döndürür. _tempnam belirtilen ad dışında bir dizinde benzersiz bir ad oluşturur. Bir dosya adı ters eğik çizgiyle eklendiğinde ve gibi \fname21yol bilgisi olmadığında, adın geçerli çalışma dizini için geçerli olduğunu gösterir.

için tmpnam, oluşturulan bu dosya adını içinde strdepolayabilirsiniz. ise strNULLtmpnam, sonucu iç statik arabellekte bırakır. Böylece sonraki çağrılar bu değeri yok eder. tarafından oluşturulan ad, program tarafından tmpnam oluşturulan bir dosya adından ve ilk çağrısından tmpnamsonra, STDIO'dayken TMP_MAX 32 tabanındaki (.1-.vvu) sıralı numaraların dosya uzantısından oluşur. H 32.767).

_tempnam aşağıdaki kurallar tarafından seçilen bir dizin için benzersiz bir dosya adı oluşturur:

  • TMP ortam değişkeni tanımlanır ve geçerli bir dizin adı olarak ayarlanırsa, TMP tarafından belirtilen dizin için benzersiz dosya adları oluşturulur.

  • TMP ortam değişkeni tanımlanmamışsa veya var olmayan bir dizinin adına ayarlanmışsa, _tempnam benzersiz adlar oluşturduğu yol olarak parametresini kullanır dir .

  • TMP ortam değişkeni tanımlanmamışsa veya var olmayan bir dizinin adına ayarlanmışsa ve yoksa veya var olmayan bir dizinin adına ayarlanmışsa dirNULL , _tempnam benzersiz adlar oluşturmak için geçerli çalışma dizinini kullanır. Şu anda hem TMP dir hem de mevcut olmayan dizin adlarını belirtirseniz, _tempnam işlev çağrısı başarısız olur.

tarafından _tempnam döndürülen ad, belirtilen dizin için benzersiz bir prefix dosya adı oluşturmak üzere birleştirilen ve sıralı bir sayıdır. _tempnam uzantısı olmayan dosya adları oluşturur. _tempnam dosya adı için alan ayırmak için kullanır malloc ; program artık gerekli olmadığında bu alanı boşaltmaktan sorumludur.

_tempnam ve tmpnam çok baytlı dize bağımsız değişkenlerini uygun şekilde otomatik olarak işleyerek, işletim sisteminden alınan OEM kod sayfasına göre çok baytlı karakter dizilerini tanıyın. _wtempnam , öğesinin _tempnamgeniş karakterli bir sürümüdür; bağımsız değişkenleri ve dönüş değeri _wtempnam geniş karakterli dizelerdir. _wtempnam ve _tempnam çok baytlı dizeleri işlememesi dışında _wtempnam aynı şekilde davranır. _wtmpnam , öğesinin tmpnamgeniş karakterli bir sürümüdür; bağımsız değişkeni ve dönüş değeri _wtmpnam geniş karakterli dizelerdir. _wtmpnam ve tmpnam çok baytlı dizeleri işlememesi dışında _wtmpnam aynı şekilde davranır.

ve tanımlanırsa _DEBUG_tempnam ve _wtempnam ve çağrıları_wtempnam_dbg_tempnam_dbgile değiştirilir._CRTDBG_MAP_ALLOC

Genel metin yordamı eşlemeleri

TCHAR.H yordamı _UNICODE ve _MBCS tanımlanmadı _MBCS Tanımlanan _UNICODE Tanımlanan
_ttmpnam tmpnam tmpnam _wtmpnam
_ttempnam _tempnam _tempnam _wtempnam

Gereksinimler

Yordam Gerekli başlık
_tempnam <stdio.h>
_wtempnam, _wtmpnam <stdio.h> veya <wchar.h>
tmpnam <stdio.h>

Daha fazla uyumluluk bilgisi için bkz . Uyumluluk.

Örnek

// crt_tempnam.c
// compile with: /W3
// This program uses tmpnam to create a unique filename in the
// temporary directory, and _tempname to create a unique filename
// in C:\\tmp.

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

int main(void)
{
   char * name1 = NULL;
   char * name2 = NULL;
   char * name3 = 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);
   }

   // Unset TMP environment variable, then create a temporary filename in C:\tmp.
   if (_putenv("TMP=") != 0) {
      printf("Could not remove TMP environment variable.\n");
   }

   // With TMP unset, we'll use C:\tmp as the temporary directory.
   // Create a temporary filename in C:\tmp with prefix "stq".
   if ((name3 = _tempnam("c:\\tmp", "stq")) != NULL) {
      printf("%s is safe to use as a temporary file.\n", name3);
   }
   else {
      printf("Cannot create a unique filename\n");
   }

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

   return 0;
}
C:\Users\LocalUser\AppData\Local\Temp\sriw.0 is safe to use as a temporary file.
C:\Users\LocalUser\AppData\Local\Temp\stq2 is safe to use as a temporary file.
c:\tmp\stq3 is safe to use as a temporary file.

Ayrıca bkz.

Akış G/Ç
_getmbcp
malloc
_setmbcp
tmpfile
tmpfile_s