Example (fdopen -- Associates Input Or Output With File)

This example opens the file sample.dat and associates a stream with the file using fdopen. It then reads from the stream into the buffer.

#if (1 == __TOS_OS2__)
#include <sys\stat.h>
#include <io.h>
#elseif (1 ==__TOS_WIN__)
#include <io.h>
#include <sys\stat.h>
#endif
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <string.h>
int main(void)
{
   long length;
   int fh;
   char buffer[20];
   FILE *fp;
   memset(buffer, '\0', 20);            /* Initialize buffer */
   printf("\nCreating sample.dat.\n");
   system("echo Sample Program > sample.dat");
   if (-1 == (fh = open("sample.dat", O_RDWR|O_APPEND))) {
      perror("Unable to open sample.dat");
      return EXIT_FAILURE;
   }
   if (NULL == (fp = fdopen(fh, "r"))) {
      perror("fdopen failed");
      close(fh);
      return EXIT_FAILURE;
   }
   if (7 != fread(buffer, 1, 7, fp)) {
      perror("fread failed");
      fclose(fp);
      return EXIT_FAILURE;
   }
   printf("Successfully read from the stream the following:\n%s.\n", buffer);
   fclose(fp);
   return 0;
   /***********************************************************
      The output should be:
      Creating sample.dat.
      Successfully read from the stream the following:
      Sample .
   ***********************************************************/
}