For working professionals
For fresh graduates
More
Explore C Tutorials: From Begi…
1. Introduction to C Tutorial
2. Addition of Two Numbers in C
3. Anagram Program in C
4. Armstrong Number in C
5. Array in C
6. Array of Pointers in C
7. Array of Structure in C
8. C Program to Find ASCII Value of a Character
9. Assignment Operator in C
10. Binary Search in C
11. Binary to Decimal in C
12. Bitwise Operators in C
13. Boolean in C
14. C Compiler for Mac
15. C Compiler for Windows
16. C Function Call Stack
17. C Language Download
18. Operators in C
19. C/C++ Preprocessors
20. C Program for Bubble Sort
21. C Program for Factorial
22. C Program for Prime Numbers
23. C Program for String Palindrome
24. C Program to Reverse a Number
25. Reverse a String in C
26. C string declaration
27. String Input Output Functions in C
28. Calculator Program in C
29. Call by Value and Call by Reference in C
30. Ceil Function in C
31. Coding Vs. Programming
32. Command Line Arguments in C/C++
33. Comments in C
34. Compilation process in C
35. Conditional Statements in C
36. Conditional operator in the C
37. Constant Pointer in C
38. Constants in C
39. Dangling Pointer in C
40. Data Structures in C
41. Data Types in C
42. Debugging C Program
43. Convert Decimal to Binary in C
44. Define And include in C
45. Difference Between Arguments And Parameters
46. Difference Between Compiler and Interpreter
47. Difference Between If Else and Switch
48. Do While Loop In C
49. Double In C
50. Dynamic Array in C
51. Dynamic Memory Allocation in C
52. Enumeration (or enum) in C
53. Evaluation of Arithmetic Expression
54. Factorial of A Number in C
55. Features of C Language
56. Fibonacci Series Program in C Using Recursion
57. File Handling in C
Now Reading
58. For Loop in C
59. Format Specifiers in C
60. Functions in C
61. Function Pointer in C
62. goto statement in C
63. C Hello World Program
64. Header Files in C
65. Heap Sort in C Program
66. Hello World Program in C
67. History of C Language
68. How to compile a C program in Linux
69. How to Find a Leap Year Using C Programming
70. Identifiers in C
71. If Else Statement in C
72. If Statement in C
73. Implementation of Queue Using Linked List
74. Increment and decrement operators in c
75. Input and Output Functions in C
76. How To Install C Language In Mac
77. Jump Statements in C
78. Lcm of Two Numbers in C
79. Length of an Array in C
80. Library Function in C
81. Linked list in C
82. Logical Operators in C
83. Macros in C
84. Matrix multiplication in C
85. Nested if else statement in C
86. Nested Loop in C
87. One Dimensional Array in C
88. Operator Precedence and Associativity in C
89. Overflow And Underflow in C
90. Palindrome Program in C
91. Pattern Programs in C
92. Pointer to Pointer in C
93. Pointers in C: A Comprehensive Tutorial
94. Pre-increment And Post-increment
95. Prime Number Program in C
96. Program for Linear Search in C
97. Pseudo-Code In C
98. Random Access Files in C
99. Random Number Generator in C
100. Recursion in C
101. Relational Operators in C
102. Simple interest program in C
103. Square Root in C
104. Stack in C
105. Stack Using Linked List in C
106. Static function in C
107. Stdio.h in C
108. Storage Classes in C
109. strcat() in C
110. Strcmp in C
111. Strcpy in C
112. String Comparison in C
113. String Functions in C
114. String Length in C
115. String Pointer in C
116. strlen() in C
117. Structures in C
118. Structure of C Program
119. Switch Case in C
120. C Ternary Operator
121. Tokens in C
122. Toupper Function in C
123. Transpose of a Matrix in C
124. Two Dimensional Array in C
125. Type Casting in C
126. Types of Error in C
127. Unary Operator in C
128. Use of C Language
129. User Defined Functions in C
130. What is Variables in C
131. Is C language case sensitive
132. Fibonacci Series in C
File handling in C is a foundational aspect of programming, extending the life and reach of data beyond the execution lifecycle of the program. It allows us to create, read, write, and modify files stored on the system. File handling is a critical component in data persistence, providing a means for data to be stored and retrieved, even after the program has been terminated or the computer has been turned off.
Before we jump into file handling in C, it's crucial to understand what a file is in the context of the C programming language.
A file in C is a structured set of bytes stored on the system's secondary memory, such as the hard disk. It's a storage area where data can be held for later retrieval. This data can be anything from text to images or binary data.
File handling in C is essential for several reasons. It allows programs to store information in a non-volatile storage medium. Data stored in files persist beyond the runtime of a program, enabling the possibility of data reusability. This means we can read, update, and manipulate stored data anytime, even long after the program that created the data has finished executing.
In C, there are two types of files that we commonly work with:
Text Files
Text files are human-readable and contain characters that can be interpreted as text. They are typically organised into lines separated by newline characters.
Binary Files
Binary files contain binary data that may not be human-readable. This data could represent anything, including images, audio files, executable programs, etc.
The standard library in C includes functions for working with files. These file handling functions can be broadly divided into five categories:
Before a file can be read or written, it must be opened using the fopen function. This function takes two arguments: the filename (including the path if necessary) and the mode. The mode determines what operations can be performed on the file.
FILE *fptr; |
In the example above, file.txt is the file we want to open, and "w" is the mode, which stands for write mode. If the file doesn't exist, it gets created.
After all operations on a file are completed, the file must be closed using the fclose function.
fclose(fptr); |
To write data to a file, we use the fprintf function. To read data from a file, we use the fscanf function.
FILE *fptr; |
In the above example, we first open file.txt in write mode. If the file cannot be opened (which may happen for various reasons), the program outputs an error message and exits. Otherwise, we write a string to the file using fprintf, and then close the file with fclose.
char str[100]; |
In this example, we open file.txt in read mode. If the file cannot be opened, the program outputs an error message and exits. Otherwise, we read a string from the file using fscanf and print it to the console. The file is then closed with fclose.
Apart from the fundamental file handling functions in C like fopen, fclose, fscanf, and fprintf, several other functions help with more specific tasks related to file handling. Understanding these functions can elevate your file handling skills in C.
getc and putc are functions for reading and writing individual characters to and from files. getc(FILE* stream) reads a character from a given file stream, while putc(int char, FILE* stream) writes a single character to the specified file stream. Here's a file handling in C example demonstrating their usage:
FILE *fptr; |
In this code, we first open file.txt in write mode and write the character 'A' to the file using putc. We then close the file, reopen it in read mode, read the character using getc, and print it.
fgets and fputs are similar to fscanf and fprintf, but they read and write strings rather than formatted data. Here's a file handling in C example:
FILE *fptr; |
In this example, we write a string to a file using fputs and then read it back using fgets.
fseek is a function that sets the file position of the stream to a specific location. It takes three parameters - pointer to a FILE object, a long integer which is the number of bytes to offset, and the position from where offset is added.
ftell gives the current position in the file of a given file pointer. It returns a long int value representing the current position in the file.
rewind is used to set the file position to the beginning of the file. It takes a pointer to a FILE object of the file as the parameter and returns no value.
Here's an example using these functions:
FILE *fptr; |
In this file handling in C example, we first write a string to file.txt, then move the file position indicator 7 characters forward. We print the current position using ftell, then reset the position to the beginning of the file using rewind and print the position again.
Now that you're acquainted with the basics of file handling, it's time to apply your knowledge. Here are some problems to practise:
1. Count Characters, Words, and Lines in a Text File
Create a C program that reads a file and counts the number of characters, words, and lines in it.
Hint: You can read the file character by character using getc. Consider a word to be a sequence of characters separated by spaces, and a line to be a sequence of characters separated by newline ('\n') characters.
2. Copy One File to Another
Write a C program that copies the contents of one file to another file.
Hint: Open both files, one in read mode and the other in write mode. Read the source file character by character using getc and write to the destination file using putc.
3. Merge Two Text Files into a Third File
Write a program that merges the contents of two text files into a third file.
Hint: Similar to the above, but you'll need to read from two files sequentially and write to a third file.
4. Encrypt and Decrypt a Text File
Create a program that encrypts a text file by shifting each character by a fixed number (e.g., 3), creating a simple Caesar cipher. Then write another program that decrypts the file back to the original content.
Hint: For each character read from the file, add the shift amount before writing it to the encrypted file. For decryption, subtract the shift amount from each character.
5. Random Access with fseek
Write a program that writes the integers 1 through 100 to a binary file using fwrite. Then, use fseek to move to the beginning of the file, and read and print every 5th integer.
Hint: You can use fseek with SEEK_SET to move to any position in the file. Remember that fseek works with bytes, so you'll need to multiply the position of the integer by the size of an integer (sizeof(int)).
Mastering file handling in C can open up a lot of opportunities for you to create more sophisticated and practical applications. By understanding and utilising file handling techniques, programmers can effectively manage and manipulate data stored in files, facilitating tasks such as data analysis, configuration management, and information exchange.
Consider upGrad's Full Stack Software Development Bootcamp to bolster your C programming skills and propel your career opportunities in the development domain.
1. What is file handling in C?
File handling in C is a process that allows a C program to create, read, write, and modify files on the system's storage. It enables storing data for prolonged periods, extending beyond the execution cycle of the program.
2. What are the key file handling functions in C?
The primary file handling functions in C are fopen (to open a file), fprintf (to write to a file), fscanf (to read from a file), and fclose (to close a file). There are other functions as well, like fseek, ftell, and rewind for more advanced file operations.
3. What are text files and binary files in C?
Text files in C are human-readable files that store data in text format. They usually contain characters and strings arranged into lines. Binary files, on the other hand, are not typically human-readable and may contain any type of data encoded in binary form, including executable code, images, and numeric data.
4. What is the importance of file handling in C?
File handling in C is vital because it allows programs to persist data beyond their runtime. This implies that data can be stored, retrieved, and manipulated even after the program has stopped running or the computer has been shut off, which is critical for many real-world applications.
Take a Free C Programming Quiz
Answer quick questions and assess your C programming knowledge
Author
Start Learning For Free
Explore Our Free Software Tutorials and Elevate your Career.
Talk to our experts. We are available 7 days a week, 9 AM to 12 AM (midnight)
Indian Nationals
1800 210 2020
Foreign Nationals
+918045604032
1.The above statistics depend on various factors and individual results may vary. Past performance is no guarantee of future results.
2.The student assumes full responsibility for all expenses associated with visas, travel, & related costs. upGrad does not provide any a.