_tempnam, _wtempnam

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu stdio.h - Index


Header-Datei

stdio.h

Kategorie

Eingabe-/Ausgaberoutinen

Prototyp

char *_tempnam(char *dir, char *prefix)

wchar_t *_wtempnam(wchar_t *dir, wchar_t *prefix)

Beschreibung

Erstellt im angegebenen Verzeichnis einen eindeutigen Dateinamen.

Die Funktion _tempnam akzeptiert Einzel-Byte- oder Multibyte-String-Argumente.

Die Funktion _tempnam erstellt einen eindeutigen Dateinamen in einem beliebigen Verzeichnis. Die eindeutige Datei wird nicht wirklich erstellt; _tempnam überprüft lediglich, dass sie aktuell noch nicht vorhanden ist. Bei der Erstellung des Dateinamens wird versucht, folgende Verzeichnisse in der angegebenen Reihenfolge zu verwenden:

  • Das in der Umgebungsvariablen TMP angegebene Verzeichnis.
  • Das im Argument dir von _tempnam angegebene Verzeichnis.
  • Das in der Definition von P_tmpdir in stdio.h angegebene Verzeichnis. Wenn Sie stdio.h bearbeiten und diese Definition ändern, verwendet _tempnam die neue Definition.
  • Das aktuelle Arbeitsverzeichnis.

Ist eines dieser Verzeichnisse NULL, nicht definiert oder nicht vorhanden, wird es übersprungen.

Das Argument prefix gibt den ersten Teil des Dateinamens an. Es darf nicht länger als 5 Zeichen sein, und es darf keinen Punkt (.) enthalten. Der eindeutige Dateinamen wird durch Verkettung des Verzeichnisnamens mit dem Präfix und 6 eindeutigen Zeichen erstellt. Speicher für diesen Dateinamen wird mit malloc reserviert. Wenn der Dateiname nicht mehr benötigt wird, sollte der Aufrufer ihn mit free freigeben.

Wenn Sie eine temporäre Datei mit einem von _tempnam gelieferten Dateinamen erstellen, liegt es in Ihrer Verantwortung, diese Datei wieder zu löschen (zum Beispiel über einen Aufruf von remove). Sie wird nicht automatisch gelöscht. (tmpfile dagegen löscht die Datei.)

Rückgabewert

Wenn erfolgreich, gibt _tempnam einen Zeiger auf den Namen der temporären Datei zurück, den der Aufrufer an free übergeben kann, wenn der Dateiname nicht mehr benötigt wird. Kann _tempnam keinen eindeutigen Dateinamen erstellen, wird NULL zurückgegeben.

Beispiel



 #include <stdio.h>
 #include <stdlib.h>
 void main(void)
 {
   FILE *stream;
   int i;
   char *name;
   for (i = 1; i <= 10; i++) {
     if ((name = tempnam("\\tmp","wow")) == NULL)
       perror("tempnam couldn't create name");
     else {
       printf("Creating %s\n",name);
       if ((stream = fopen(name,"wb")) == NULL)
         perror("Could not open temporary file\n");
       else
         fclose(stream);
     }
     free(name);
   }
   printf("Warning: temp files not deleted.\n");
 }



Portabilität



POSIX Win32 ANSI C ANSI C++

_tempnam

+

_wtempnam

+