====== tmpnam() ======
''tmpnam()'' ist definiert in der ''[[start|stdio]]'', die in C über ''stdio.h'', bzw. in C++ über ''cstdio'' eingebunden wird.
===== Funktion =====
''tmpnam()'' erstellt einen Dateinamen, der sich von allen anderen Dateien unterscheidet und verwendet werden kann, ohne eine andere Datei zu überschreiben.
===== Signatur =====
#include
char * tmpnam( char * str );
**string**: Zeiger auf ein char-Array, das mindestens die ''[[L_tmpnam]]'' Zeichen breit ist, alternativ ''[[c:lib:stddef:null|NULL]]''. \\
\\
**Return Value**: Zeiger auf den generierten Namen. Wenn der Parameter ''string'' gesetzt war, wird ''string'' zurückgegeben. Wurde NULL als ''string'' übergeben, so wird ein Zeiger auf ein internes statisches Array zurückgegeben. Schlägt ''tmpnam()'' fehl, so wird ''NULL'' zurückgegeben.
===== Fehlerquellen =====
Wird ''NULL'' für ''string'' übergeben, so wird der Name in einem internen statischen Array erzeugt, dass durch andere Funktionen überschrieben werden könnte. Daher ist es ratsam, den Dateinamen in einem eigenen Array erzeugen zu lassen.
===== Beispiel =====
#include
#include
int main( void )
{
char buffer1[ L_tmpnam ], buffer2[ L_tmpnam ];
char *result1, *result2;
tmpnam( buffer1 );
result1 = tmpnam( NULL );
tmpnam( buffer2 );
result2 = tmpnam( NULL );
printf( "buffer1: %s\n", buffer1 );
printf( "result1: %s\n", result1 );
printf( "buffer2: %s\n", buffer2 );
printf( "result2: %s\n", result2 );
return EXIT_SUCCESS;
}
**Ausgabe**: \\
buffer1: /var/tmp/tmp.0.GQj1JX
result1: /var/tmp/tmp.3.HDHkP9
buffer2: /var/tmp/tmp.2.itFpKU
result2: /var/tmp/tmp.3.HDHkP9
Hierbei fällt auf, dass beide result-Einträge gleich sind: Das interne, statische Array wurde beim zweiten Aufruf wieder überschrieben.
===== siehe auch =====
[[c:lib:stdio:start|stdio]]: [[c:lib:stdio:fopen()]], [[c:lib:stdio:tmpfile()]], [[c:lib:stdio:printf()]]