Opening, reading, writing, and closing files.

Lesson 7.1: Opening, Reading, Writing, and Closing Files

In this lesson, you'll learn how to interact with files, allowing your C programs to read data from existing files and write data to new or existing files. This opens up a wide range of possibilities for storing, retrieving, and processing information.

File Handling Basics

File Pointer:

In C, you work with files through a file pointer (FILE *).

This pointer acts as a reference to the file and is used in all file I/O operations.

fopen() Function:

The fopen() function is used to open a file.

It takes two arguments:

Filename: The name of the file you want to open (e.g., "data.txt").

Mode: Specifies how you want to access the file (e.g., read, write, append).

Common File Modes:

"r": Open for reading (file must exist).

"w": Open for writing (creates a new file or overwrites an existing one).

"a": Open for appending (adds data to the end of the file).

"r+": Open for both reading and writing (file must exist).

"w+": Open for both reading and writing (creates a new file or overwrites an existing one).

"a+": Open for both reading and appending (creates a new file if it doesn't exist).

fclose() Function:

The fclose() function is used to close a file after you're done with it.

It's important to close files to release system resources and ensure data integrity.

Reading from a File

fscanf() Function:

Reads formatted data from a file (similar to scanf() for console input).


FILE *file = fopen("data.txt", "r");

int num;

fscanf(file, "%d", &num);  // Read an integer from the file



fgets() Function:

Reads a line of text from a file.


char line[256];

fgets(line, sizeof(line), file); // Read a line into the 'line' array

fgetc() Function:

Reads a single character from a file.


int ch;

while ((ch = fgetc(file)) != EOF) { // EOF (End of File) is a special marker

    // Process the character


Writing to a File

fprintf() Function:

Writes formatted data to a file (similar to printf() for console output).


FILE *file = fopen("output.txt", "w"); // Create or overwrite the file

fprintf(file, "Hello, %s!\n", "World");


fputs() Function:

Writes a string to a file.


fputs("This is a line of text.\n", file);

fputc() Function:

Writes a single character to a file.


fputc('A', file);

Example: Copying a File


#include <stdio.h>

#include <stdlib.h> // For exit()

int main() {

    FILE *sourceFile = fopen("input.txt", "r");

    FILE *destinationFile = fopen("output.txt", "w");

    if (sourceFile == NULL || destinationFile == NULL) {

        perror("Error opening files");

        exit(1); // Exit with error code


    int ch;

    while ((ch = fgetc(sourceFile)) != EOF) {

        fputc(ch, destinationFile); // Copy each character




    printf("File copied successfully!\n");

    return 0;


Key Points:

**FILE *: The file pointer.

fopen(): Opens a file.

File Modes: Specify how to access the file.

fclose(): Closes a file.

fscanf(), fgets(), fgetc(): Reading functions.

fprintf(), fputs(), fputc(): Writing functions.

Error Handling: Always check for errors when working with files (e.g., if a file doesn't exist or can't be opened).

Course Syllabus