Skip to content
Related Articles
Get the best out of our app
GeeksforGeeks App
Open App
geeksforgeeks
Browser
Continue

Related Articles

fseek() vs rewind() in C

Improve Article
Save Article
Like Article
Improve Article
Save Article
Like Article

In C, fseek() should be preferred over rewind().

Note the following text C99 standard:
The rewind function sets the file position indicator for the stream pointed to by stream to the beginning of the file. It is equivalent to




(void)fseek(stream, 0L, SEEK_SET)

except that the error indicator for the stream is also cleared.

This following code example sets the file position indicator of an input stream back to the beginning using rewind(). But there is no way to check whether the rewind() was successful.




int main()
{
  FILE *fp = fopen("test.txt", "r");
  
  if ( fp == NULL ) {
    /* Handle open error */
  }
  
  /* Do some processing with file*/
  
  rewind(fp);  /* no way to check if rewind is successful */
  
  /* Do some more precessing with file */
  
  return 0;
}

In the above code, fseek() can be used instead of rewind() to see if the operation succeeded. Following lines of code can be used in place of rewind(fp);




if ( fseek(fp, 0L, SEEK_SET) != 0 ) {
  /* Handle repositioning error */
}

Source:
https://www.securecoding.cert.org/confluence/display/seccode/FIO07-C.+Prefer+fseek%28%29+to+rewind%28%29

This article is contributed by Rahul Gupta. Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.


My Personal Notes arrow_drop_up
Last Updated : 28 May, 2017
Like Article
Save Article
Similar Reads