tmpnam_s
, _wtmpnam_s
Geçici dosyalar oluşturmak için kullanabileceğiniz adlar oluşturun. Bu işlevler, CRT'deki tmpnam
_wtmpnam
Güvenlik özellikleri bölümünde açıklandığı gibi ve sürümleridir.
Sözdizimi
errno_t tmpnam_s(
char * str,
size_t sizeInChars
);
errno_t _wtmpnam_s(
wchar_t *str,
size_t sizeInChars
);
template <size_t size>
errno_t tmpnam_s(
char (&str)[size]
); // C++ only
template <size_t size>
errno_t _wtmpnam_s(
wchar_t (&str)[size]
); // C++ only
Parametreler
str
[out] Oluşturulan adı tutan işaretçi.
sizeInChars
[in] Arabelleğin karakter cinsinden boyutu.
Dönüş değeri
Bu işlevlerin her ikisi de başarılı olursa 0 veya hata durumunda bir hata numarası döndürür.
Hata koşulları
str |
sizeInChars |
Dönüş değeri | İçeriği str |
---|---|---|---|
NULL |
herhangi bir | EINVAL |
değiştirilmedi |
not NULL (geçerli belleğe işaret eden) |
çok kısa | ERANGE |
değiştirilmedi |
ise str
NULL
, parametre doğrulamasında açıklandığı gibi geçersiz parametre işleyicisi çağrılır. Yürütmenin devam etmesi için izin verilirse, bu işlevler olarak EINVAL
ayarlanır errno
ve döndürürEINVAL
.
Açıklamalar
Bu işlevlerin her biri, şu anda mevcut olmayan bir dosyanın adını döndürür. tmpnam_s
tarafından GetTempPathW
döndürülen belirtilen Windows geçici dizininde benzersiz bir ad döndürür. Bir dosya adı ters eğik çizgiyle eklendiğinde ve gibi \fname21
yol bilgisi olmadığında, adın geçerli çalışma dizini için geçerli olduğunu gösterir.
için tmpnam_s
, oluşturulan bu dosya adını içinde str
depolayabilirsiniz. tarafından tmpnam_s
döndürülen bir dizenin uzunluk üst sınırı, STDIO.H içinde tanımlanmıştır L_tmpnam_s
. ise str
NULL
tmpnam_s
, 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_s
oluşturulan bir dosya adından ve ilk çağrısından tmpnam_s
sonra 32 tabanında (.1-.1vvvvvu) TMP_MAX_S
sıralı numaraların dosya uzantısından oluşur. H ise INT_MAX
).
tmpnam_s
çok baytlı dize bağımsız değişkenlerini uygun şekilde otomatik olarak işler ve işletim sisteminden alınan OEM kod sayfasına göre çok baytlı karakter dizilerini tanır. _wtmpnam_s
, öğesinin tmpnam_s
geniş karakterli bir sürümüdür; bağımsız değişkeni ve dönüş değeri _wtmpnam_s
geniş karakterli dizelerdir. _wtmpnam_s
ve tmpnam_s
çok baytlı dizeleri işlememesi dışında _wtmpnam_s
aynı şekilde davranır.
C++'ta bu işlevlerin kullanılması şablon aşırı yüklemeleriyle basitleştirilir; aşırı yüklemeler arabellek uzunluğunu otomatik olarak çıkararak boyut bağımsız değişkeni belirtme gereksinimini ortadan kaldırır. Daha fazla bilgi için bkz . Güvenli şablon aşırı yüklemeleri.
Varsayılan olarak, bu işlevin genel durumunun kapsamı uygulama olarak belirlenmiştir. Bu davranışı değiştirmek için bkz. CRT'de Genel durum.
Genel metin yordamı eşlemeleri
TCHAR.H yordamı | _UNICODE ve _MBCS tanımlanmadı |
_MBCS tanımlanan |
_UNICODE tanımlanan |
---|---|---|---|
_ttmpnam_s |
tmpnam_s |
tmpnam_s |
_wtmpnam_s |
Gereksinimler
Yordam | Gerekli başlık |
---|---|
tmpnam_s |
<stdio.h> |
_wtmpnam_s |
<stdio.h> veya <wchar.h> |
Daha fazla uyumluluk bilgisi için bkz . Uyumluluk.
Örnek
// crt_tmpnam_s.c
// This program uses tmpnam_s to create a unique filename in the
// current working directory.
//
#include <stdio.h>
#include <stdlib.h>
int main( void )
{
char name1[L_tmpnam_s];
errno_t err;
int i;
for (i = 0; i < 15; i++)
{
err = tmpnam_s( name1, L_tmpnam_s );
if (err)
{
printf("Error occurred creating unique filename.\n");
exit(1);
}
else
{
printf( "%s is safe to use as a temporary file.\n", name1 );
}
}
}
C:\Users\LocalUser\AppData\Local\Temp\u19q8.0 is safe to use as a temporary file.
C:\Users\LocalUser\AppData\Local\Temp\u19q8.1 is safe to use as a temporary file.
C:\Users\LocalUser\AppData\Local\Temp\u19q8.2 is safe to use as a temporary file.
C:\Users\LocalUser\AppData\Local\Temp\u19q8.3 is safe to use as a temporary file.
C:\Users\LocalUser\AppData\Local\Temp\u19q8.4 is safe to use as a temporary file.
C:\Users\LocalUser\AppData\Local\Temp\u19q8.5 is safe to use as a temporary file.
C:\Users\LocalUser\AppData\Local\Temp\u19q8.6 is safe to use as a temporary file.
C:\Users\LocalUser\AppData\Local\Temp\u19q8.7 is safe to use as a temporary file.
C:\Users\LocalUser\AppData\Local\Temp\u19q8.8 is safe to use as a temporary file.
C:\Users\LocalUser\AppData\Local\Temp\u19q8.9 is safe to use as a temporary file.
C:\Users\LocalUser\AppData\Local\Temp\u19q8.a is safe to use as a temporary file.
C:\Users\LocalUser\AppData\Local\Temp\u19q8.b is safe to use as a temporary file.
C:\Users\LocalUser\AppData\Local\Temp\u19q8.c is safe to use as a temporary file.
C:\Users\LocalUser\AppData\Local\Temp\u19q8.d is safe to use as a temporary file.
C:\Users\LocalUser\AppData\Local\Temp\u19q8.e is safe to use as a temporary file.