#include "mat.h" char **matGetDir(fp,num)
MATFile *fp;
int *num;
integer*4 function matGetDir(fp,num)
integer*4 fp, num
fp
num
matGetDir
returns a pointer to an internal array containing pointers to the NULL
-terminated names of the Matrices in the MAT-file pointed to by fp
. The length of the internal array (number of Matrices in the MAT-file) is placed into num
. The internal array is allocated using a single mxCalloc
and must be freed using mxFree
when you are finished with it.
matGetDir
returns NULL
if it fails.
MATLAB variable names can by up to length mxMAXNAM
, where mxMAXNAM
is defined in the file matrix.h
.
/*The Fortran version of this program is inmattest7.c
*/
#include <stdio.h> #include "mat.h" main() { MATFile *fp;
char **dir;
int ndir,i; fp = matOpen("foo.mat","r"); dir = matGetDir(fp,&ndir); matClose(fp); if (dir == NULL) { printf("Can''t read directory.\n"); exit(0); } else { printf("Directory of MAT-file:\n"); for (i = 0; i < ndir; i++) { printf("%s\n",dir[i]); } } mxFree(dir); }
mattest7.f
:
program main
integer
*4 fp, dir, ndir, adir(100)
character
*20 names(100)
fp = matOpen('foo.mat','r');
dir = matGetDir(fp,ndir)
if (dir .eq. 0) then
write (6,
*) 'Can't read directory.'
stop
end if
c Copy pointer into an array of pointers
call mxCopyPtrToInteger4(dir, adir, ndir)
c Copy pointer to character string
do 20 i = 1,ndir
call mxCopyPtrToCharacter(adir(i),names(i),20)
20 continue
write(6,
*) 'Directory of MAT-file:'
do 30 i = 1,ndir
write(6,
*) names(i)
30 continue
matClose(fp)
stop
end
(c) Copyright 1994 by The MathWorks, Inc.