C tmpfile() Function | Create Temporary Files in C

Introduction

The tmpfile() function in C is a standard library function that creates a temporary file and opens it in binary update mode (wb+). The file is automatically deleted when it is closed or the program terminates. It is part of the C standard library (stdio.h) and is commonly used for creating temporary files that do not need a permanent name or location.

tmpfile() Function Syntax

The syntax for the tmpfile() function is as follows:

FILE *tmpfile(void);

Parameters:

  • The tmpfile() function does not take any parameters.

Returns:

  • The function returns a pointer to a FILE object that identifies the temporary file. If the file cannot be created, NULL is returned.

Examples

Creating and Using a Temporary File

To demonstrate how to use tmpfile() to create and use a temporary file, we will write a simple program.

Example

#include <stdio.h>

int main() {
    FILE *temp_file;
    char buffer[100];

    // Create a temporary file
    temp_file = tmpfile();
    if (temp_file == NULL) {
        printf("Error: Could not create temporary file.\n");
        return 1;
    }

    // Write some data to the temporary file
    fprintf(temp_file, "This is a temporary file.\n");

    // Rewind the file pointer to the beginning of the file
    rewind(temp_file);

    // Read the data from the temporary file
    if (fgets(buffer, sizeof(buffer), temp_file) != NULL) {
        // Print the read data
        printf("Read from temporary file: %s", buffer);
    } else {
        printf("Error: Could not read from temporary file.\n");
    }

    // Close the temporary file
    fclose(temp_file);

    return 0;
}

Output:

Read from temporary file: This is a temporary file.

Real-World Use Case

Processing Data in a Temporary File

In real-world applications, the tmpfile() function can be used to process data in a temporary file without affecting permanent files on the filesystem.

Example

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

void process_data(FILE *file) {
    // Simulate data processing by writing and reading from the file
    fprintf(file, "Temporary data for processing.\n");

    // Rewind the file pointer to the beginning of the file
    rewind(file);

    // Read and process the data
    char buffer[100];
    while (fgets(buffer, sizeof(buffer), file) != NULL) {
        printf("Processing: %s", buffer);
    }
}

int main() {
    // Create a temporary file
    FILE *temp_file = tmpfile();
    if (temp_file == NULL) {
        printf("Error: Could not create temporary file.\n");
        return 1;
    }

    // Process data using the temporary file
    process_data(temp_file);

    // Close the temporary file (it will be deleted automatically)
    fclose(temp_file);

    return 0;
}

Output:

Processing: Temporary data for processing.

Conclusion

The tmpfile() function is useful for creating temporary files that are automatically removed when they are no longer needed. This function is ideal for scenarios where you need a temporary file to store intermediate data without worrying about cleanup.

Comments