home *** CD-ROM | disk | FTP | other *** search
/ Sams Teach Yourself C in 21 Days (6th Edition) / STYC216E.ISO / mac / Examples / Day16 / direct.c < prev    next >
C/C++ Source or Header  |  2002-08-11  |  1KB  |  59 lines

  1. /* Direct file I/O with fwrite() and fread(). */
  2. #include <stdlib.h>
  3. #include <stdio.h>
  4.  
  5. #define SIZE 20
  6.  
  7. int main( void )
  8. {
  9.    int count, array1[SIZE], array2[SIZE];
  10.    FILE *fp;
  11.  
  12.    /* Initialize array1[]. */
  13.  
  14.    for (count = 0; count < SIZE; count++)
  15.        array1[count] = 2 * count;
  16.  
  17.    /* Open a binary mode file. */
  18.  
  19.    if ( (fp = fopen("direct.txt", "wb")) == NULL)
  20.    {
  21.        fprintf(stderr, "Error opening file.");
  22.        exit(1);
  23.    }
  24.    /* Save array1[] to the file. */
  25.  
  26.    if (fwrite(array1, sizeof(int), SIZE, fp) != SIZE)
  27.    {
  28.        fprintf(stderr, "Error writing to file.");
  29.        exit(1);
  30.    }
  31.  
  32.    fclose(fp);
  33.  
  34.    /* Now open the same file for reading in binary mode. */
  35.  
  36.    if ( (fp = fopen("direct.txt", "rb")) == NULL)
  37.    {
  38.        fprintf(stderr, "Error opening file.");
  39.        exit(1);
  40.    }
  41.  
  42.    /* Read the data into array2[]. */
  43.  
  44.    if (fread(array2, sizeof(int), SIZE, fp) != SIZE)
  45.    {
  46.        fprintf(stderr, "Error reading file.");
  47.        exit(1);
  48.    }
  49.  
  50.    fclose(fp);
  51.  
  52.    /* Now display both arrays to show they're the same. */
  53.  
  54.    for (count = 0; count < SIZE; count++)
  55.        printf("%d\t%d\n", array1[count], array2[count]);
  56.    return 0;
  57. }
  58.  
  59.