Provided by: libmatio-doc_1.5.26-1build3_all bug

NAME

       Mat_VarReadNextInfo — Reads the information for the next variable in a MATLAB MAT file.

SYNOPSIS

       #include <matio.h>

       matvar_t *
       Mat_VarReadNextInfo(mat_t *matfp);

DESCRIPTION

       The  Mat_VarReadNextInfo()  function  reads  the information for the next variable stored in the open MAT
       file.

RETURN VALUES

       If there is another variable in the MAT file and is read successfully, a pointer to the  MATLAB  variable
       structure  is  returned. If there are no more variables, or there was an error reading the variable, NULL
       is returned.

EXAMPLES

       This example  program  opens  a  MAT  file  named  by  the  first  argument  to  the  program,  and  uses
       Mat_VarReadNextInfo()  to  read the information about each variable in the file.  For each variable read,
       the name, size, and class are printed in a format similar to the MATLAB whos command.

       #include <stdlib.h>
       #include <stdio.h>
       #include "matio.h"

       static char *mxclass[17] = {"cell", "struct", "object", "char", "sparse",
                                   "double", "single", "int8", "uint8", "int16",
                                   "uint16", "int32", "uint32", "int64", "uint64",
                                   "function", "opaque"
                                  };

       int
       main(int argc, char **argv)
       {
           mat_t    *matfp;
           matvar_t *matvar;
           char size[32] = {' ',};

           matfp = Mat_Open(argv[1], MAT_ACC_RDONLY);
           if ( NULL == matfp ) {
               fprintf(stderr, "Error opening MAT file %s0, argv[1]);
               return EXIT_FAILURE;
           }

           printf("%-20s       %-10s     %-10s     %-18s0, "Name", "Size",
                  "Bytes", "Class");
           while ( NULL != (matvar = Mat_VarReadNextInfo(matfp)) ) {
               printf("%-20s", matvar->name);
               if ( matvar->rank > 0 ) {
                   int cnt = 0;
                   int i;
                   printf("%8d", matvar->dims[0]);
                   for ( i = 1; i < matvar->rank; i++ ) {
                       if ( ceil(log10(matvar->dims[i])) + 1 < 32 )
                           cnt += sprintf(size + cnt, "x%d", matvar->dims[i]);
                   }
                   printf("%-10s", size);
               } else {
                   printf("                    ");
               }
               printf("  %-18s0, mxclass[matvar->class_type - 1]);

               Mat_VarFree(matvar);
           }

           Mat_Close(matfp);
           return EXIT_SUCCESS;
       }

SEE ALSO

       Mat_VarRead(3), Mat_VarReadInfo(3), Mat_VarReadNext(3)

Debian                                         September 12, 2019                         MAT_VARREADNEXTINFO(3)