Write the Content of a File

Now, let’s move on to implementing the ability to write content to a file. This step will empower us to not only read but also modify and save information within a file.

C




#include <stdio.h>
#include <string.h>
  
void print_file(const char* filename)
{
    FILE* file = fopen(filename, "r");
    if (file == NULL) {
        printf("Unable to open file %s\n", filename);
        return;
    }
  
    int ch;
    while ((ch = fgetc(file)) != EOF) {
        putchar(ch);
    }
  
    fclose(file);
}
  
void write_to_file(const char* filename)
{
    FILE* file = fopen(filename, "w");
    if (file == NULL) {
        printf("Unable to open file %s\n", filename);
        return;
    }
  
    int ch; // or char ch;
    while ((ch = getchar()) != EOF) {
        fputc(ch, file);
    }
  
    fclose(file);
}
  
int main(int argc, char* argv[])
{
    if (argc < 2) {
        printf("Usage: %s filename1 [filename2 ...]\n",
               argv[0]);
        return 1;
    }
  
    for (int i = 1; i < argc; ++i) {
        // check wather the file is to be written to or read
        if (strcmp(argv[i], "-") == 0) {
            write_to_file(argv[++i]);
        }
        else {
            printf("%s :\n", argv[i]);
            print_file(argv[i]);
            printf("\n");
        }
    }
  
    return 0;
}


How to Use?

We can use this feature as shown below:

./cat - file

You may think about why we are using `-` operator instead of `>`. The reason id that when you run cat > file1.txt, the shell interprets this as “run the cat command and redirect its output to file1.txt”. However, in your program, you’re treating > as a filename, which is why you’re seeing unexpected behavior.Now this program is capable of writing the content on a file we can check this by running `cat – file1.txt`.

The above code not only enables to write the user to file, but is also able to create a new file if the file does not exists.

Example

Build Your Own ‘cat’ Command in C for Linux

You may have heard about cat command which is a Linux command. It stands for concatenate and plays an important role in Unix-like operating systems by helping to concatenate and display file contents. Despite the simple name, cat does a lot of work and goes beyond just putting those files together. This allows users to easily create, view, and merge multiple files, making data management much easier.

Additionally, its ability to redirect output to other commands or files gives it great importance in shell scripting and command-line tasks.

In this article, we’ll explore the inner workings of the ‘cat’ command by creating our version with C which is capable of viewing the content of the file, writing the content to the file, and also concatenating two files.

Similar Reads

Features of C ‘cat’ Command Program

This program will implement 3 functionalities of the ‘cat’ command. There are:...

1. View the Content of the File

To begin, we’ll focus on implementing the functionality to view the contents of a single file. So it will be easy to implement viewing multiple files further....

2. Write the Content of a File

...

3. Concatenate Two Files

...

Conclusion

Now, let’s move on to implementing the ability to write content to a file. This step will empower us to not only read but also modify and save information within a file....