w3resource

C fseek() function

C library function - fseek()

The fseek() function change the current file position that is associated with stream to a new location within the file.

Syntax:

int fseek(FILE *stream, long int offset, int whence)

fseek() Parameters:

Name Description Required /Optional
stream Identifies an address for a file descriptor, which is an area of memory associated with an input or output stream. Required
offset Number of bytes to offset from whence Required
whence The new position, measured in bytes from the beginning of the file, shall be obtained by adding offset to the position specified by whence. Required

Return value from fseek()

  • The fseek() function shall return 0 if they succee,d otherwise, they shall return -1 and set errno to indicate the error.

Example: fseek() function

Following function opens a file test.txt for reading. After performing input operations,fseek() moves the file pointer to the beginning of the file.

#include <stdio.h>
#define  MAX_LEN  10
 
int main(void)
{
   FILE *stream;
   char buffer[MAX_LEN + 1];
   int  result;
   int  i;
   char ch;
 
   stream = fopen("test.txt", "r");
   for (i = 0; (i  < (sizeof(buffer)-1) &&
       ((ch = fgetc(stream)) != EOF) && (ch != '\n')); i++)
          buffer[i] = ch;
 
   result = fseek(stream, 0L, SEEK_SET);  /* moves the pointer to the */
                                          /* beginning of the file    */
   if (result == 0)
      printf("Pointer successfully moved to the beginning of the file.\n");
   else
      printf("Failed moving pointer to the beginning of the file.\n");
}

Output:

Pointer successfully moved to the beginning of the file.

C Programming Code Editor:

Previous C Programming: C fread()
Next C Programming: C fsetpos()



Follow us on Facebook and Twitter for latest update.

C Programming: Tips of the Day

Reading a string with scanf :

An array "decays" into a pointer to its first element, so scanf("%s", string) is equivalent to scanf("%s", &string[0]). On the other hand, scanf("%s", &string) passes a pointer-to-char[256], but it points to the same place.

Then scanf, when processing the tail of its argument list, will try to pull out a char *. That's the Right Thing when you've passed in string or &string[0], but when you've passed in &string you're depending on something that the language standard doesn't guarantee, namely that the pointers &string and &string[0] -- pointers to objects of different types and sizes that start at the same place -- are represented the same way.

Ref : https://bit.ly/3pdEk6f