ein Kapitel zurück                                           ein Kapitel weiter

Mit tmpnam können sie einen eindeutigen Namen für eine temporäre Datei erzeugen. Der Syntax sieht wie folgt aus...

char *tmpnam(char * zgr)

Mit tmpnam wird also ein eindeutiger Name erzeugt, das heißt keinen Namen einer bereits existierender Datei. Insgesamt können TMP_MAX eindeutige Namen erzeugt werden. TMP_MAX ist in der Headerdatei definiert. Mit folgendem Programm können sie herausfinden wie viele temporäre Dateien sie erzeugen können...

/*Download:tmpmax.c*/
#include <stdio.h> int main() { printf("TMP_MAX = %u\n",TMP_MAX); return 0; }

Wenn sie bei der Funktion tmpnam folgendes Schreiben...

tmpnam(NULL);

...wird die Datei in einem static - Speicherbereich untergebracht und die Adresse wird als Funktionswert wiedergegeben. Das heißt nun das nachfolgende Aufrufe der Funktion tmpnam die selbe Adresse einnehmen. Aus diesem Grund sollten sie Umkopieren um die alte Adresse nicht zu überschreiben.

Sollten sie tmpnam keinen NULL - Zeiger angeben dann wird für zgr ein Adressbereich adressiert der L_tmpnam Zeichen aufnehem kann. L_tmpnam ist auch in der Headerdatei <stdio.h

/*Download:ltmp.c*/
#include <stdio.h> int main() { printf("L_tmpnam = %d Zeichen\n",L_tmpnam); return 0; }

Bevor wir zu einem Programmbeispiel von tmpnam kommen benötigen wir erst noch mal die Funktion tmpfile. Hier der Syntax...

FILE *tmpfile(void);

Mit tmpfile wird automatisch eine temporäre Datei erzeugt und wenn das Programm ordentlich beendet wird wird diese Datei auch wieder automatisch gelöscht.

Nun wird es Zeit Ihnen diese beide Funktionen anhand eines Programmbeispieles zu demonstrieren...

/*Download:tmpfile.c*/
#include <stdio.h> #include <stdlib.h> int main() { FILE *tmp; int i; char tempdatei[L_tmpnam], zeile[1000]; printf("Demo Funktion tmpnam.......\n"); for(i=1; i<=4; i++) { if(i%2==0) { printf("%20d. %s\n",i,tmpnam(NULL)); } else { tmpnam(tempdatei); printf("%20d. %s\n",i,tempdatei); } } printf("Demo Funktion tmpfile........\n"); if((tmp=tmpfile()) == NULL) { fprintf(stderr,"Fehler bei tmpfile\n"); exit (0); } /*Wir schreiben mit fputs in die temporäre Datei auf die tmp zeigt*/ fputs("Dieser Text wird in die temporäre Datei geschrieben\n",tmp); rewind(tmp); if(fgets(zeile,sizeof(zeile),tmp) == NULL) { fprintf(stderr,"Fehler bei fgets.....\n"); exit (1); } printf("%s\n",zeile); return 0; }

Als erstes wird in diesem Programm die Funktion tmpnam demonstriert. Wir erzeugen 2 temporäre Dateien mit dem NULL - Zeiger und zwei ohne. Anschließend erzeugen wir eine temporäre Datei und schreiben einen Text in diese Datei mit fputs. Anschließend lesen wir aus der erzeugte temporären Datei auf die der FILE - Zeiger tmp zeigt. Bei ordentlichem beenden wird diese temporäre Datei auch wieder gelöscht. Zur Demonstration das auch tatsächlich eine temporäre Datei erzeugt wurde könne sie bevor sie mit der Zeile...

if(fgets(zeile,sizeof(zeile),tmp) == NULL)

aus der temporären Datei lesen das Programm mit exit abbrechen. Etwa so....

rewind(tmp);
exit (1);
if(fgets(zeile,sizeof(zeile),tmp) == NULL)

Nun sollte in dem Verzeichnis in dem sie das Programm ausführen eine Datei sein mit dem Inhalt des Textes...

Dieser Text wird in die temporäre Datei geschrieben

Der Name der Datei dürfte TMP5.$$$ oder so ähnlich lauten.

ein Kapitel zurück          nach oben           ein Kapitel weiter


© 2001,2002 Jürgen Wolf