✍️ C Write to Files – Output Data to Text and Binary Files in C
🧲 Introduction – How to Write to Files in C?
In C programming, writing to files enables a program to store data persistently in external files. Whether you’re saving logs, exporting reports, or storing raw binary data, C provides standard functions like fprintf()
, fputs()
, and fwrite()
to perform file output operations.
🎯 In this guide, you’ll learn:
- How to open files for writing
- Write to text files using
fprintf()
andfputs()
- Write to binary files using
fwrite()
- Handle common writing errors and close files properly
📁 Opening Files for Writing
Before writing to a file, it must be opened in write mode using fopen()
. Writing modes:
Mode | Description |
---|---|
"w" | Write text file (overwrite if exists) |
"a" | Append text at end of file |
"wb" | Write binary file (overwrite) |
"ab" | Append to binary file |
FILE *fp = fopen("output.txt", "w");
if (fp == NULL) {
perror("Error opening file");
}
🖊️ Writing to Text Files
✅ fprintf()
– Formatted Output
FILE *fp = fopen("data.txt", "w");
fprintf(fp, "Name: %s\nAge: %d\n", "Alice", 30);
fclose(fp);
- Behaves like
printf()
but writes to a file - Supports format specifiers (
%s
,%d
,%f
, etc.)
✅ fputs()
– Write String to File
FILE *fp = fopen("log.txt", "a");
fputs("Log entry: Program started.\n", fp);
fclose(fp);
- Writes a string (without format control)
- Faster and simpler than
fprintf()
for plain strings
💾 Writing to Binary Files
✅ fwrite()
– Write Raw Data
FILE *fp = fopen("data.bin", "wb");
int numbers[] = {10, 20, 30};
fwrite(numbers, sizeof(int), 3, fp);
fclose(fp);
Syntax:
fwrite(pointer, size_of_each_element, number_of_elements, file_pointer);
- Writes raw memory as-is into the file
- Ideal for compact storage and structured records
❗ Error Handling While Writing
Always verify that the file is opened and written successfully:
FILE *fp = fopen("file.txt", "w");
if (fp == NULL) {
perror("Failed to open file");
return 1;
}
if (fprintf(fp, "Hello") < 0) {
printf("Write failed!\n");
}
fclose(fp);
🧠 Use Cases
Task | Function |
---|---|
Writing logs | fputs() |
Exporting reports | fprintf() |
Saving binary data | fwrite() |
Appending entries | "a" or "ab" mode |
Writing configuration | fprintf() |
💡 Best Practices & Tips
📘 Best Practice:
Always close the file using fclose()
after writing to ensure buffers are flushed and file descriptors released.
💡 Tip:
Use "a"
or "ab"
mode to preserve existing data and append new content.
⚠️ Pitfall:
Opening a file in "w"
or "wb"
overwrites its content if it already exists.
📌 Summary – Recap & Next Steps
Writing to files in C is a core part of building persistent, user-driven applications. Whether using formatted text or binary output, you can control how data is saved and organized externally.
🔍 Key Takeaways:
- Use
fopen("file.txt", "w")
or"wb"
to write files fprintf()
andfputs()
are for text outputfwrite()
is used for binary output- Always check file opening success and close files properly
⚙️ Real-World Relevance:
Used in loggers, data exporters, binary storage tools, report generation, and embedded device state storage.
❓ Frequently Asked Questions (FAQ)
❓ How do I write to a text file in C?
✅ Use fopen()
with "w"
or "a"
mode, then write using fprintf()
or fputs()
.
❓ How can I write binary data to a file?
✅ Use fopen()
with "wb"
mode and write with fwrite()
.
❓ What happens if I open an existing file in "w"
mode?
❌ It gets overwritten, and all previous content is lost.
❓ Is fprintf()
safer than fputs()
?
✅ fprintf()
offers format control, while fputs()
is simpler for plain strings. Both are safe if used correctly.
❓ Can I write multiple types of data in one file?
✅ Yes. Use fprintf()
for formatted text or fwrite()
with structs for binary.
Share Now :