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
#include <stdio.h>
int main()
{
FILE * fptr;
printf ( "Size of FILE Structure: %d bytes" ,
sizeof ( FILE ));
return 0;
}
|
Output
Size 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
NULL Pointer in C
The Null Pointer is the pointer that does not point to any location but NULL. According to C11 standard: âAn integer constant expression with the value 0, or such an expression cast to type void *, is called a null pointer constant. If a null pointer constant is converted to a pointer type, the resu
4 min read
C Pointers
A pointer is a variable that stores the memory address of another variable. Instead of holding a direct value, it has the address where the value is stored in memory. This allows us to manipulate the data stored at a specific memory location without actually using its variable. It is the backbone of
10 min read
void Pointer in C
A void pointer is a pointer that has no associated data type with it. A void pointer can hold an address of any type and can be typecasted to any type. Example of Void Pointer in C[GFGTABS] C // C Program to demonstrate that a void pointer // can hold the address of any type-castable type #include
3 min read
'this' pointer in C++
In C++, 'this' pointers is a pointer to the current instance of a class. It is used to refer to the object within its own member functions. In this article, we will learn how to use 'this' pointer in C++. Let's take a look at an example: [GFGTABS] C++ #include <iostream> using namespace std; /
5 min read
Function Pointer in C
In C, a function pointer is a type of pointer that stores the address of a function, allowing functions to be passed as arguments and invoked dynamically. It is useful in techniques such as callback functions, event-driven programs, and polymorphism (a concept where a function or operator behaves di
6 min read
C - File I/O
In this article, we will learn how to operate over files using a C program. A single C file can read, write, move, and create files in our computer easily using a few functions and elements included in the C File I/O system. We can easily manipulate data in a file regardless of whether the file is a
11 min read
Pointer vs Array in C
Most of the time, pointer and array accesses can be treated as acting the same, the major exceptions being:  1. the sizeof operator sizeof(array) returns the amount of memory used by all elements in the array sizeof(pointer) only returns the amount of memory used by the pointer variable itself 2.
1 min read
Array of Pointers in C
In C, a pointer array is a homogeneous collection of indexed pointer variables that are references to a memory location. It is generally used in C Programming when we want to point at multiple memory locations of a similar data type in our C program. We can access the data by dereferencing the point
6 min read
Structure Pointer in C
A structure pointer is a pointer variable that stores the address of a structure. It allows the programmer to manipulate the structure and its members directly by referencing their memory location rather than passing the structure itself. In this article let's take a look at structure pointer in C.
3 min read
Pointers vs Array in C++
Arrays and pointers are two derived data types in C++ that have a lot in common. In some cases, we can even use pointers in place of arrays. But even though they are so closely related, they are still different entities. In this article, we will study how the arrays and pointers are different from e
3 min read