home *** CD-ROM | disk | FTP | other *** search
/ PC World 2000 April / PCWorld_2000-04_cd.bin / Software / Servis / Devc / _SETUP.6 / Group8 / filehand.c next >
C/C++ Source or Header  |  2000-01-03  |  1KB  |  58 lines

  1. /*
  2.  * An example showing how you can obtain the UNIX-ish file number from a
  3.  * FILE* and in turn how you can get the Win32 HANDLE of the file from
  4.  * the file number.
  5.  *
  6.  * This code is in the PUBLIC DOMAIN and has NO WARRANTY.
  7.  *
  8.  * Colin Peters <colin@fu.is.saga-u.ac.jp>
  9.  */
  10.  
  11. #include <stdio.h>
  12. #include <io.h>
  13. #include <windows.h>
  14.  
  15. int
  16. main (int argc, char* argv[])
  17. {
  18.     char*    szFileName;
  19.     FILE*    fileIn;
  20.     int    fnIn;
  21.     HANDLE    hFileIn;
  22.     char    caBuf[81];
  23.     int    nRead;
  24.  
  25.     if (argc >= 2)
  26.     {
  27.         szFileName = argv[1];
  28.     }
  29.     else
  30.     {
  31.         szFileName = "junk.txt";
  32.     }
  33.  
  34.     fileIn = fopen (szFileName, "r");
  35.  
  36.     if (!fileIn)
  37.     {
  38.         printf ("Could not open %s for reading\n", szFileName);
  39.         exit(1);
  40.     }
  41.  
  42.     fnIn = fileno (fileIn);
  43.     hFileIn = (HANDLE) _get_osfhandle (fnIn);
  44.  
  45.     printf ("OS file handle %d\n", (int) hFileIn);
  46.  
  47.     ReadFile (hFileIn, caBuf, 80, &nRead, NULL);
  48.  
  49.     printf ("Read %d bytes using ReadFile.\n", nRead);
  50.  
  51.     caBuf[nRead] = '\0';
  52.  
  53.     printf ("\"%s\"\n", caBuf);
  54.  
  55.     fclose (fileIn);
  56. }
  57.  
  58.