summaryrefslogtreecommitdiffstats
path: root/tools/h5dump/binread.c
blob: 108a7608cf84c50eb70b551dfa3b1d265d86cf20 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100

/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
 * Copyright by the Board of Trustees of the University of Illinois.         *
 * All rights reserved.                                                      *
 *                                                                           *
 * This file is part of HDF5.  The full HDF5 copyright notice, including     *
 * terms governing use, modification, and redistribution, is contained in    *
 * the files COPYING and Copyright.html.  COPYING can be found at the root   *
 * of the source code distribution tree; Copyright.html can be found at the  *
 * root level of an installed copy of the electronic HDF5 document set and   *
 * is linked from the top-level documents page.  It can also be found at     *
 * http://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html.  If you do not have     *
 * access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. *
 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

/* 
 This program reads binary output from h5dump (-b option).
 To use change the following 3 symbols accordingly.
 For example, to read 2 elements of a float type , define

  #define NELMTS     2
  #define TYPE       float
  #define FORMAT     "%f "

*/

#define NELMTS     6
#define TYPE       int
#define FORMAT     "%d "

/*-------------------------------------------------------------------------
 * Function: usage
 *
 * Purpose: Prints a usage message on stderr and then returns.
 *
 * Return: void
 *
 * Programmer:	Pedro Vicente Nunes
 *
 * Modifications:
 *
 *-------------------------------------------------------------------------
 */
static void
usage (void)
{
 fprintf(stderr, "\
 usage: binread FILE_NAME\n");
}

/*-------------------------------------------------------------------------
 * Function: main
 *
 * Purpose: main program.
 *
 *-------------------------------------------------------------------------
 */

int
main (int argc, const char *argv[])
{
 FILE  *stream;
 int    numread;
 TYPE   buf[NELMTS];
 size_t i, nelmts = NELMTS;
 char  *fname=NULL;

 if (argc != 2)
 {
  usage();
  exit(1);
 }

 fname = strdup(argv[1]);

 if( (stream = fopen(fname, "rb" )) != NULL )
 {
  numread = fread( buf, sizeof( TYPE ), nelmts, stream );
  printf( "Number of items read = %d\n", numread );
  
  for (i = 0; i < nelmts; i++)
  {
   printf(FORMAT,buf[i]);
  }
  printf("\n");

  fclose( stream );
 }
 else
  printf( "File %s could not be opened\n",fname );

 free(fname);

 return 0;
}