
427 views
C fseek()
The fseek() function in C is used to set the file position indicator (cursor) within a file. It allows you to move the cursor to a specific position in the file, which is useful for reading or writing data at a particular location within the file. fseek() is typically used with files opened in binary mode ("rb" for reading or "wb" for writing).
Here’s the prototype of the fseek() function:
C
int fseek(FILE *stream, long int offset, int whence);stream: A pointer to theFILEstructure representing the open file.offset: The number of bytes by which the file position indicator is to be moved. A positive value moves the indicator forward, and a negative value moves it backward.whence: An integer that specifies the reference point for theoffset. It can take one of the following values:SEEK_SET(0): Set the position relative to the beginning of the file.SEEK_CUR(1): Set the position relative to the current position of the file pointer.SEEK_END(2): Set the position relative to the end of the file.
The fseek() function returns 0 on success and a non-zero value on failure.
Here are some common uses of fseek():
- Move to the Beginning of a File:
C
fseek(file, 0, SEEK_SET);- Move to the End of a File:
C
fseek(file, 0, SEEK_END);- Move Forward or Backward a Specific Number of Bytes:
C
fseek(file, 100, SEEK_CUR); // Move 100 bytes forward from the current position
fseek(file, -50, SEEK_CUR); // Move 50 bytes backward from the current position- Move to a Specific Position in the File:
C
fseek(file, 200, SEEK_SET);
// Move to the 200th byte from the beginning of the fileHere’s a simple example that demonstrates the use of fseek() to move the cursor within a file:
C
#include <stdio.h>
int main() {
FILE *file = fopen("example.txt", "rb"); // Open a file for reading in binary mode
if (file == NULL) {
perror("Error opening the file");
return 1;
}
fseek(file, 10, SEEK_SET); // Move to the 10th byte from the beginning of the file
// Read and print the content from this position
char buffer[100];
if (fread(buffer, 1, sizeof(buffer), file) > 0) {
printf("Data read from the file: %s\n", buffer);
} else {
perror("Error reading the file");
}
fclose(file); // Close the file
return 0;
}In this example, fseek() is used to move to the 10th byte from the beginning of the file, and then data is read and printed from that position.