In C programming, file operations allow you to store and retrieve data on disk, enabling persistent data storage beyond program execution. The basic file operations in C include opening a file, reading from a file, writing to a file, and closing a file. The C standard library provides a set of functions to perform these tasks, making it easy to work with files in C.
To work with a file, you first need to open it using the fopen
function. This function takes two arguments: the file name and the mode in which the file should be opened. The mode determines if the file is opened for reading, writing, or both.
Syntax:
FILE *fopen(const char *filename, const char *mode);
The fopen
function returns a pointer to a FILE
object, which is used to access the file. If the file cannot be opened, fopen
returns NULL
.
r
- Open for reading. The file must exist.w
- Open for writing. Creates a new file or truncates an existing file.a
- Open for appending. Creates a new file if it doesn’t exist.r+
- Open for both reading and writing. The file must exist.w+
- Open for reading and writing. Creates a new file or truncates an existing file.a+
- Open for reading and appending. Creates a new file if it doesn’t exist.#include <stdio.h> int main() { FILE *file = fopen("example.txt", "r"); if (file == NULL) { printf("Could not open file.\n"); return 1; } // File opened successfully fclose(file); return 0; }
In this example, we try to open a file named example.txt
in read mode. If the file cannot be opened, fopen
returns NULL
.
Once a file is open, you can read from it using functions such as fgetc
, fgets
, or fread
.
The fgetc
function reads a single character from the file.
#include <stdio.h> int main() { FILE *file = fopen("example.txt", "r"); if (file == NULL) { printf("Could not open file.\n"); return 1; } char ch; while ((ch = fgetc(file)) != EOF) { putchar(ch); // Print each character to the console } fclose(file); return 0; }
The fgets
function reads a line of text from the file.
#include <stdio.h> int main() { FILE *file = fopen("example.txt", "r"); if (file == NULL) { printf("Could not open file.\n"); return 1; } char line[100]; while (fgets(line, sizeof(line), file) != NULL) { printf("%s", line); // Print each line to the console } fclose(file); return 0; }
You can write data to a file using functions such as fputc
, fputs
, or fprintf
.
The fputc
function writes a single character to the file.
#include <stdio.h> int main() { FILE *file = fopen("example.txt", "w"); if (file == NULL) { printf("Could not open file.\n"); return 1; } fputc('A', file); // Write character 'A' to the file fclose(file); return 0; }
The fputs
function writes a string to the file.
#include <stdio.h> int main() { FILE *file = fopen("example.txt", "w"); if (file == NULL) { printf("Could not open file.\n"); return 1; } fputs("Hello, World!\n", file); // Write a line to the file fclose(file); return 0; }
After completing file operations, it’s important to close the file using the fclose
function. Closing a file ensures that all data is properly written to the disk and frees up system resources.
Example of Closing a File:
#include <stdio.h> int main() { FILE *file = fopen("example.txt", "w"); if (file == NULL) { printf("Could not open file.\n"); return 1; } fputs("Hello, World!\n", file); fclose(file); // Close the file return 0; }
The following example demonstrates how to open a file, write data to it, read the data back, and close the file.
#include <stdio.h> int main() { // Open the file for writing FILE *file = fopen("example.txt", "w"); if (file == NULL) { printf("Could not open file.\n"); return 1; } // Write data to the file fputs("This is a file operation example.\n", file); // Close the file after writing fclose(file); // Open the file for reading file = fopen("example.txt", "r"); if (file == NULL) { printf("Could not open file.\n"); return 1; } // Read and display the file content char line[100]; while (fgets(line, sizeof(line), file) != NULL) { printf("%s", line); } // Close the file after reading fclose(file); return 0; }
fopen
function is used to open a file in different modes, such as read, write, or append.fclose
function closes a file, freeing system resources.fgetc
and fgets
; for writing, fputc
and fputs
.
Understanding file operations is essential for managing persistent data in C. By learning how to open, read, write, and close files, you can create programs that store data beyond the runtime of the program. Properly using file functions like fopen
, fgetc
, fputs
, and fclose
will help you work with files efficiently and reliably.