##### cppreference.com

##### Search

Create account

##### Namespaces

- Page
- Discussion

##### Variants

##### Views

- View
- Edit
- History

##### Actions

# tmpnam

From cppreference.com
< c‎ | io

Defined in header `<stdio.h>` |  |
char *tmpnam( char *filename ); |  |

Creates an unique filename and stores it in character string pointed to by `filename`. The function is capable of generating up to TMP_MAX of unique filenames, but some or all of them may be in use in the filesystem and thus not suitable return values.

`tmpnam` is not reentrant and thus not thread-safe.

### [edit] Parameters

filename | - | pointer to the character string to be used as a result buffer. If `NULL` is passed, a pointer to an internal static buffer is returned.

### [edit] Return value

`filename` if `filename` was not NULL. Otherwise a pointer to an internal static buffer is returned. If no suitable filename can be generated, NULL is returned.

### [edit] Notes

Although the names generated by `tmpnam` are difficult to guess, it is possible that a file with that name is created by another process between the moment `tmpnam` returns and the moment this program attempts to use the returned name to create a file. The standard function std::tmpfile and the POSIX function mkstemp do not have this problem.

POSIX systems additionally define the similarly named function `tempnam()`, which offers the choice of a directory (which defaults to the optionally defined macro `P_tmpdir)`

### [edit] Example

Run this code

    #include <stdlib.h>
    #include <stdio.h>
    #include <stdint.h>
    #include <stdbool.h>

    int main(int argc, char *argv[])
    {
        printf("Welcome to %s\n", argv[0]);
        printf("Called with %u arguments\n", argc - 1);

        char buffer[L_tmpnam] = {'\0'};
        tmpnam(buffer);
        printf(buffer);
        printf("\n");

        printf("Goodbye!\n");
        exit(EXIT_SUCCESS);
    }

Output:

    Welcome to ./main_release
    Called with 0 arguments
    /tmp/file6HADua
    Goodbye!

### [edit] See also

tmpfile | returns a pointer to a temporary file (function) [edit]
C++ documentation for tmpnam

Retrieved from "http://en.cppreference.com/mwiki/index.php?title=c/io/tmpnam&oldid=65066"