title: Understanding the need for fflush() and problems associated with it
body: <p>Below is sample code for using fflush():</p>
  
  <pre><code>#include &lt;string.h&gt;
  #include &lt;stdio.h&gt;
  #include &lt;conio.h&gt;
  #include &lt;io.h&gt;
  
  void flush(FILE *stream);
  
  int main(void)
  {
     FILE *stream;
     char msg[] = "This is a test";
  
     /* create a file */
     stream = fopen("DUMMY.FIL", "w");
  
     /* write some data to the file */
     fwrite(msg, strlen(msg), 1, stream);
  
     clrscr();
     printf("Press any key to flush DUMMY.FIL:");
     getch();
  
     /* flush the data to DUMMY.FIL without closing it */
     flush(stream);
  
     printf("\nFile was flushed, Press any key to quit:");
     getch();
     return 0;
  }
  
  void flush(FILE *stream)
  {
       int duphandle;
  
       /* flush the stream's internal buffer */
       fflush(stream);
  
       /* make a duplicate file handle */
       duphandle = dup(fileno(stream));
  
       /* close the duplicate handle to flush the DOS buffer */
       close(duphandle);
  }
  </code></pre>
  
  <p>All I know about fflush() is that it is a library function used to flush an output buffer. I want to know what is the basic purpose of using fflush(), and where can I use it. And mainly I am interested in knowing <strong>what problems can there be with using fflush().</strong></p>