C File Handling
Learn to read from and write to files, manage file operations in C programs.
Introduction to File Handling
File handling in C allows you to read from and write to files on disk. Key concepts: - Files are streams of data - C provides standard library functions for file operations - Files must be opened before use and closed after use - File operations can fail, so error checking is important Basic file operations: 1. Open a file 2. Read from or write to the file 3. Close the file File modes: - "r" - Read mode - "w" - Write mode (creates new file or overwrites existing) - "a" - Append mode - "r+" - Read and write mode - "w+" - Write and read mode (creates new file) - "a+" - Append and read mode ```
Opening and Closing Files
Opening Files:
```c
FILE *file_pointer;
file_pointer = fopen("filename.txt", "mode");
```
Closing Files:
```c
fclose(file_pointer);
```
Error checking:
```c
FILE *fp = fopen("data.txt", "r");
if (fp == NULL) {
printf("Error opening file!\n");
return 1;
}
// Use the file
fclose(fp);
```
Important points:
- Always check if file opening was successful
- Always close files when done
- fopen() returns NULL on failure
- fclose() returns 0 on success, EOF on failure
```Reading from Files
Common file reading functions:
1. fgetc() - Read a single character:
```c
int ch = fgetc(fp);
if (ch != EOF) {
printf("Character: %c\n", ch);
}
```
2. fgets() - Read a line:
```c
char buffer[100];
if (fgets(buffer, sizeof(buffer), fp) != NULL) {
printf("Line: %s", buffer);
}
```
3. fscanf() - Read formatted data:
```c
int num;
fscanf(fp, "%d", &num);
```
4. fread() - Read binary data:
```c
int data[10];
fread(data, sizeof(int), 10, fp);
```Writing to Files
Common file writing functions:
1. fputc() - Write a single character:
```c
fputc('A', fp);
```
2. fputs() - Write a string:
```c
fputs("Hello, World!\n", fp);
```
3. fprintf() - Write formatted data:
```c
int age = 25;
fprintf(fp, "Age: %d\n", age);
```
4. fwrite() - Write binary data:
```c
int data[] = {1, 2, 3, 4, 5};
fwrite(data, sizeof(int), 5, fp);
```File Position and Error Handling
File Position Functions:
```c
// Get current position
long position = ftell(fp);
// Set position to beginning
rewind(fp);
// Set position to specific location
fseek(fp, 10, SEEK_SET); // From beginning
fseek(fp, -5, SEEK_CUR); // From current position
fseek(fp, 0, SEEK_END); // From end
```
Error Handling:
```c
// Check for end of file
if (feof(fp)) {
printf("End of file reached\n");
}
// Check for errors
if (ferror(fp)) {
printf("Error occurred while reading file\n");
}
// Clear error flags
clearerr(fp);
```Practice Examples
Try these examples in our online C compiler to reinforce your learning:
Writing to a File
Demonstrates how to write data to a file using fprintf().
#include <stdio.h>
int main() {
FILE *fp;
// Open file for writing
fp = fopen("output.txt", "w");
if (fp == NULL) {
printf("Error opening file!\n");
return 1;
}
// Write data to file
fprintf(fp, "Hello, World!\n");
fprintf(fp, "This is a test file.\n");
fprintf(fp, "Numbers: %d, %d, %d\n", 10, 20, 30);
// Close file
fclose(fp);
printf("Data written to file successfully!\n");
return 0;
}Reading from a File
Shows how to read data from a file line by line.
#include <stdio.h>
int main() {
FILE *fp;
char buffer[100];
// Open file for reading
fp = fopen("input.txt", "r");
if (fp == NULL) {
printf("Error opening file!\n");
return 1;
}
// Read and display file contents
printf("File contents:\n");
while (fgets(buffer, sizeof(buffer), fp) != NULL) {
printf("%s", buffer);
}
// Close file
fclose(fp);
return 0;
}Copy File Contents
Demonstrates file copying by reading and writing character by character.
#include <stdio.h>
int main() {
FILE *source, *destination;
int ch;
// Open source file
source = fopen("source.txt", "r");
if (source == NULL) {
printf("Error opening source file!\n");
return 1;
}
// Open destination file
destination = fopen("copy.txt", "w");
if (destination == NULL) {
printf("Error creating destination file!\n");
fclose(source);
return 1;
}
// Copy file contents character by character
while ((ch = fgetc(source)) != EOF) {
fputc(ch, destination);
}
// Close files
fclose(source);
fclose(destination);
printf("File copied successfully!\n");
return 0;
}Congratulations!
You've completed the C programming tutorial series! You now have a solid foundation in C programming.