Bildirim
char* tmpnam(char *filename);
errno_t tmpnam_s(char *filename_s, rsize_t maxsize); (C11)
Açıklama
Benzersiz bir geçerli dosya adı oluştururarak dosya adını filename ile gösterilen parametreye atar. Dosya adı uzunluğu L_tmpnam değerinden büyük olamaz. Fonksiyon, TMP_MAX değeri kadar benzersiz dosya adı üretebilir, ancak bunların bazıları veya tümü dosya sisteminde kullanımda olabilir ve bu nedenle uygun dönüş değerleri olmayabilir.
Tmpnam_s() fonksiyonu aynı işlemleri yapar. Farklı olarak, uzunluğu L_tmpnam_s değerinden uzun olmamak üzere, en az TMP_MAX_S değeri kadar dosya adı oluşturulabilir. açılabilir. Çalışma zamanında aşağıdaki hatalar tespit edildiğinde yüklenmiş olan kısıtlayıcı işlem fonksiyonu çağrılır:
Parametreler
filename : Önerilen geçici adın bir karakter dizisi olarak kaydedileceği en az L_tmpnam kadar byte alabilecek kapasitedeki bir karakter dizisi işaretçisidir. Eğer NULL bir işaretçi atanırsa, dahili statik ara belleği gösteren bir işaretçi döndürülür.
filename_s : Önerilen geçici adın bir karakter dizisi olarak kaydedileceği en az L_tmpnam_s kadar byte alabilecek kapasitedeki bir karakter dizisi işaretçisidir.
maxsize : Fonksiyonun yazabileceği maksimum karakter sayısıdır.
Dönüş değeri
Tmpnam() fonksiyonu, filename parametresi NULL bir işaretçi değilse, filename parametresini geri döndürür. Aksi takdirde, dahili statik ara belleği gösteren bir işaretçi geri döndürür. Eğer fonksiyon uygun bir dosya adı oluşturamazsa, NULL bir işaretçi değeri geri döndürür.
Tmpnam_s() fonksiyonu, başarı durumunda 0 değeri geri döndürür ve dosya adını filename_s parametresine yazar. Hata durumunda, sıfır olmayan bir değer döndürür ve filename_s[0] adresine boş bir karakter ('\0') yazar (filename_s boş bir karakter içermiyorsa ve maxsize 0 değilse ve RSIZE_MAX değerinden büyük değilse).
Örnek
#include <stdio.h>
int main(void)
{
char cdizi[L_tmpnam];
printf("Geçici dosya adı: %s\n", tmpnam(cdizi));
printf("Geçici dosya adı: %s", tmpnam(NULL));
return 0;
}
Yukarıdaki örnekte, program aşağıdaki satırları ekrana yazar:
Geçici dosya adı: \s8l4. Geçici dosya adı: \s8l4.1
Yukarıdaki program, tmpnam() fonksiyonu ile 2 adet geçici dosya oluşturarak dosya adlarını ekrana yazar.