⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 h5.c

📁 《MATLAB实用指南》系列丛书DE源代码
💻 C
字号:
/////////////////////Mex头文件////////////////////////////////////////////
#include "mex.h"
#include "String.h"
////////////////////用户C程序:C语言定义结构体 ///////////////////////////////
struct Person
{char Name[10];
 int Age;
 char Sex[2];
 char Address[30];
 char Tel[15];
};
///////////用户C程序:C语言输入结构体数据 ///////////////////////////////////////
void InputPerson(int n,struct Person *P)
{ int i;
FILE *fp1;
char *InPutFile;
InPutFile="Per.txt";
mexPrintf(" %s\n",InPutFile);
if((fp1=fopen(InPutFile,"r"))==NULL){mexErrMsgTxt(" Can't open InPutfile\n");}
for(i=0;i<n;i++)fscanf(fp1,"%s %d %s %s %s",P[i].Name,&P[i].Age,P[i].Sex,P[i].Address,P[i].Tel);
fclose(fp1);
}

////////////////// 接口程序mexFunction/////////////////////////////////////
void mexFunction(int nlhs,mxArray *plhs[],int nrhs, mxArray *prhs[])
{int i,n,buf;
struct Person *P;
//char *InPutFile;
mxArray *Data;
char **Fields;////mx结构体字段名
////////////////// 由 prhs[] 中取得Matlab输入数据
n=(int)mxGetScalar(prhs[0]);
//buf=(mxGetM(prhs[1]) * mxGetN(prhs[1]) * sizeof(mxChar)) + 1;
//mxGetString(prhs[1],InPutFile,buf);
P=mxCalloc(n,sizeof(struct Person));///mx内存分配方式为结构体分配内存
Fields[0]="Name"; Fields[1]="Age"; 
Fields[2]="Sex";  Fields[3]="Address";
Fields[4]="Tel";

InputPerson(n,P); ////调用C程序
Data=mxCreateStructMatrix(1,1,5,Fields);///创建mx结构体	
for(i=0;i<n;i++){  //////为mx结构体赋值
mxSetField(Data,0,Fields[0],mxCreateString(P[i].Name));
mxSetField(Data,0,Fields[1],mxCreateDoubleScalar((double)(P[i].Age)));
mxSetField(Data,0,Fields[2],mxCreateString(P[i].Sex));
mxSetField(Data,0,Fields[3],mxCreateString(P[i].Address));
mxSetField(Data,0,Fields[4],mxCreateString(P[i].Tel));
plhs[i]=mxCreateStructMatrix(1,1,5,Fields);///将输出参数创建为mx结构体并分配内存
plhs[i]=mxDuplicateArray(Data);////mxArray对象--结构体数值拷贝
}
mxDestroyArray(Data); ///释放mxArray对象内存
mxFree(P);////////mx内存释放方式将结构体内存释放
}
///////////////////结束////////////////////////////////////////////////////

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -