Bildirim
FILE* tmpfile(void);
errno_t tmpfile_s(FILE *restrict *restrict streamptr); (C11)
Açıklama
Güncelleme modunda (wb+) geçici bir ikili sistem dosyası oluşturur ve açar. Açılan dosya adı dosya sistemi içinde benzersiz olarak oluşturulur. Bir program süresince en azından TMP_MAX kadar geçici dosya açılabilir.
Oluşturulan geçici dosya, fclose() fonksiyonu ile akış kapatıldığında veya program sonlandığında otomatik olarak silinir.
Tmpfile_s() fonksiyonu aynı işlemleri yapar. Farklı olarak, en az TMP_MAX_S değeri kadar dosya açılabilir. Eğer streamptr parametresi NULL bir işaretçi ise yüklenmiş olan kısıtlayıcı işlem fonksiyonu çağrılır.
Parametreler
Tmpfile() fonksiyonu için parametre tanımı yoktur.
Tmpfile()_s fonksiyonu için:
streamptr: Bu fonksiyona çağrı ile güncellenen işaretçiyi gösteren bir işaretçidir.
Dönüş değeri
Tmpfile() fonksiyonu, başarı durumunda oluşturulan geçici dosyayı gösteren bir akış işaretçisi, hata durumunda ise NULL bir değer geri döndürür.
Tmpfile_s() fonksiyonu, eğer dosya başarılı bir şekilde oluşturulur ve açılırsa 0 değeri, dosya oluşturulamaz veya açılamazsa veya streamptr parametre değeri NULL bir işaretçi ise, sıfır olmayan bir değer geri döndürür. Streamptr parametresine, başarı durumunda ilgili dosya akışını gösteren bir işaretçi aksi takdirde NULL bir işaretçi değeri atanır.
Örnek
#include <stdio.h>
int main(void)
{
FILE *fp;
char cdizi[20];
if ((fp = tmpfile()) == NULL) {
printf("Geçici dosya açma hatası!");
exit(1);
}
fputs("Bilgisayar", fp);
rewind(fp);
fgets(cdizi, 20, fp);
printf("%s", cdizi);
fclose(fp);
return 0;
}
Yukarıdaki örnekte, program aşağıdaki satırı ekrana yazar:
Bilgisayar
Yukarıdaki program, tmpfile() fonksiyonu ile oluşturduğu geçici dosyaya fputs() fonksiyonu ile yazdığı karakter dizisini fgets() fonksiyonu ile okutarak ekrana yazar.