- C Library - Home
- C Library - <assert.h>
- C Library - <complex.h>
- C Library - <ctype.h>
- C Library - <errno.h>
- C Library - <fenv.h>
- C Library - <float.h>
- C Library - <inttypes.h>
- C Library - <iso646.h>
- C Library - <limits.h>
- C Library - <locale.h>
- C Library - <math.h>
- C Library - <setjmp.h>
- C Library - <signal.h>
- C Library - <stdalign.h>
- C Library - <stdarg.h>
- C Library - <stdbool.h>
- C Library - <stddef.h>
- C Library - <stdio.h>
- C Library - <stdlib.h>
- C Library - <string.h>
- C Library - <tgmath.h>
- C Library - <time.h>
- C Library - <wctype.h>
- C Programming Resources
- C Programming - Tutorial
- C - Useful Resources
C Library - fsetpos() function
The C library fsetpos() function sets the file position of the given stream to the given position. The argument pos is a position given by the function fgetpos.This function is part of the <stdio.h> library and is particularly useful for random access to files.
Syntax
Following is the C library syntax of fsetpos() function −
int fsetpos(FILE *stream, const fpos_t *pos);
Parameter
This function accepts following parameters
- FILE *stream: A pointer to a FILE object that identifies the stream.
- const fpos_t *pos: A pointer to an fpos_t object containing the new position. The fpos_t type is used to represent file positions.
Return Value
The fsetpos() function returns 0 on success and returns a non-zero value on error.
Example 1
This example demonstrates setting the file position to the beginning of the file after writing to it.
#include <stdio.h>
int main() {
FILE *file = fopen("example1.txt", "w+");
if (file == NULL) {
perror("Failed to open file");
return 1;
}
fputs("Hello, World!", file);
fpos_t pos;
fgetpos(file, &pos); // Get the current position
rewind(file); // Set position to the beginning
fsetpos(file, &pos); // Set back to the saved position
fputs(" Overwrite", file);
fclose(file);
return 0;
}
Output
The above code produces following result−
Hello, World! Overwrite
Example 2
Using fsetpos()to Move to a Specific Position
This example demonstrates moving to a specific position in the file and modifying content.
#include <stdio.h>
int main() {
FILE *file = fopen("example2.txt", "w+");
if (file == NULL) {
perror("Failed to open file");
return 1;
}
fputs("1234567890", file);
fpos_t pos;
fgetpos(file, &pos); // Get the current position
pos.__pos = 5; // Set position to 5
fsetpos(file, &pos); // Move to position 5
fputs("ABCDE", file);
fclose(file);
return 0;
}
Output
After execution of above code, we get the following result
12345ABCDE
Example 3
Saving and Restoring File Positions
This example demonstrates saving a file position, performing some operations, and then restoring the original position.
#include <stdio.h>
int main() {
FILE *file = fopen("example3.txt", "w+");
if (file == NULL) {
perror("Failed to open file");
return 1;
}
fputs("Original content", file);
fpos_t pos;
fgetpos(file, &pos); // Save the current position
fseek(file, 0, SEEK_END); // Move to the end of the file
fputs("\nNew content", file);
fsetpos(file, &pos); // Restore the original position
fputs(" modified", file);
fclose(file);
return 0;
}
Output
The output of the above code is as follows −
Original modified content New content