A file pointer is a variable that is used to refer to an opened file in a C program. The file pointer is actually a structure that stores the file data such as the file name, its location, mode, and the current position in the file. It is used in almost all the file operations in C such as opening, closing, reading, writing, etc.
Syntax
FILE *ptr;
Here, FILE is the typedef name of the predefined file pointer structure and ptr is a pointer variable of type FILE.
Example of File Pointer
C
// C Program to demonstrate the file pointer
#include <stdio.h>
int main()
{
// declaring file pointer
FILE* fptr;
// trying to get the size of FILE datatype.
printf("Size of FILE Structure: %d bytes",
sizeof(FILE));
return 0;
}
OutputSize of FILE Structure: 216 bytes
How File Pointer Works in C?
We use a file pointer to refer to the file opened using fopen() function and the behavior of a file pointer can vary depending on the access modes specified when opening the file using the fopen() function.
Let's see how the C file pointer works in files with different access modes:
1. In Read Mode ( "r" )
Syntax
FILE *fp;
fp = fopen("fileName", "r");
- The position of the file pointer is initially at the beginning of the file.
- When we read data from a file using functions like fgetc(), fgets(), etc., the file pointer moves forward automatically to the next position after the read operation.
- We cannot perform write operations using file pointer referring to the file opened in read mode.
2. In Write Mode ( "w" )
Syntax
FILE *fp;
fp = fopen("fileName", "w");
- If the file exists, the position of the file pointer is initially at the beginning of the file.
- The existing content in the file is overwritten when we write data to the file.
- When we write data to the file using functions like fputc(), fprintf(), etc., the file pointer moves forward automatically to the next position after the write operation.
- Read operations like fgetc() or fgets() cannot be performed on file pointer pointing to these files.
3. Append Mode ( "a" )
Syntax
FILE *fp;
fp = fopen("fileName", "a");
- In append mode, the file pointer is positioned at the end of the file.
- The file pointer automatically moves forward to the next position after each write operation.
How File Pointer Works in fseek() function?
fseek() function in C is used to set or change the file pointer to a specific position within a file.
Syntax
fseek(FILE *filePointer, long offset, int origin);
Parameters
- filePointer: The file pointer we want to modify.
- offset: The number of bytes to move the file pointer that can be positive or negative.
- origin: The starting point from where the offset is calculated. It can take one of the following values:
- SEEK_SET: Beginning of the file.
- SEEK_CUR: Current position of the file pointer.
- SEEK_END: End of the file.
When we call fseek() and provide the value of offset and origin, the position of the file pointer is changed accordingly. The new position is determined by adding the offset to the origin. It returns 0 if the operation is successful and it returns a non-zero value if an error occurred.
Conclusion
File pointers in C are important for performing input and output operations on files. They work as an interface between the program and the file, allowing us to read from and write to the file.
Similar Reads
C Programming Language Tutorial C is a general-purpose mid-level programming language developed by Dennis M. Ritchie at Bell Laboratories in 1972. It was initially used for the development of UNIX operating system, but it later became popular for a wide range of applications. Today, C remains one of the top three most widely used
5 min read
C Language Introduction C is a general-purpose procedural programming language initially developed by Dennis Ritchie in 1972 at Bell Laboratories of AT&T Labs. It was mainly created as a system programming language to write the UNIX operating system.Main features of CWhy Learn C?C is considered mother of all programmin
6 min read
Dynamic Memory Allocation in C using malloc(), calloc(), free() and realloc() In C, a variable defined in a function is stored in the stack memory. The requirement of this memory is that it needs to know the size of the data to memory at compile time (before the program runs). Also, once defined, we can neither change the size nor completely delete the memory.To resolve this,
9 min read
Data Types in C Each variable in C has an associated data type. It specifies the type of data that the variable can store like integer, character, floating, double, etc.Example:C++int number;The above statement declares a variable with name number that can store integer values.C is a statically type language where
5 min read
C Arrays An array in C is a fixed-size collection of similar data items stored in contiguous memory locations. It can be used to store the collection of primitive data types such as int, char, float, etc., as well as derived and user-defined data types such as pointers, structures, etc. Creating an Array in
7 min read
C Pointers A pointer is a variable that stores the memory address of another variable. Instead of holding a direct value, it holds the address where the value is stored in memory. It is the backbone of low-level memory manipulation in C. Accessing the pointer directly will just give us the address that is stor
9 min read
C Programs To learn anything effectively, practicing and solving problems is essential. To help you master C programming, we have compiled over 100 C programming examples across various categories, including basic C programs, Fibonacci series, strings, arrays, base conversions, pattern printing, pointers, and
8 min read
Operators in C In C language, operators are symbols that represent some kind of operations to be performed. They are the basic components of the C programming. In this article, we will learn about all the operators in C with examples.What is an Operator in C?A C operator can be defined as the symbol that helps us
11 min read
Bitwise Operators in C In C, bitwise operators are used to perform operations directly on the binary representations of numbers. These operators work by manipulating individual bits (0s and 1s) in a number.The following 6 operators are bitwise operators (also known as bit operators as they work at the bit-level). They are
6 min read
Basics of File Handling in C File handling in C is the process in which we create, open, read, write, and close operations on a file. C language provides different functions such as fopen(), fwrite(), fread(), fseek(), fprintf(), etc. to perform input, output, and many different C file operations in our program.Need of File Han
13 min read