exm120153_1.cpp

来自「《精通Matlab6.5版》张志勇等编著」· C++ 代码 · 共 53 行

CPP
53
字号
#include "mex.h"											//							  <1>
#include "string.h"											//							  <2>

//-------------------------------------------------
void stringplus(char *input_buf0,char *input_buf1,char *output_buf)
{
	strcat(output_buf,input_buf0);
	strcat(output_buf,input_buf1);
}

//-------------------------------------------------
void mexFunction(int nlhs,mxArray *plhs[], int nrhs,const mxArray *prhs[])			//<10>
{
char *input_buf0,*input_buf1,*output_buf;					//
int buflen,buflen0,buflen1,status;								//

	if (nrhs!=2)													//			  <13>
		mexErrMsgTxt("Two inputs inquired.");												//<14>
	else  if (nlhs>1)											//			//<15>
		mexErrMsgTxt("Too many output arguments.");									//<16>

	if (mxIsChar(prhs[0])!=1||mxIsChar(prhs[1])!=1)		//		  <17>
		mexErrMsgTxt("Inputs must be a string.");
	if (mxGetM(prhs[0])!=1||mxGetM(prhs[1])!=1)		//		  <19>
		mexErrMsgTxt("Inputs must be a row vector.");
	
	buflen0=(mxGetM(prhs[0])*mxGetN(prhs[0]))+1;	//<21>
	buflen1=(mxGetM(prhs[1])*mxGetN(prhs[1]))+1;	//<22>
	buflen=buflen0+buflen1-1;								//

	input_buf0=(char *)mxCalloc(buflen0,sizeof(char));
			//
			//
	input_buf1=(char *)mxCalloc(buflen1,sizeof(char));
	output_buf=(char *)mxCalloc(buflen,sizeof(char));

	//
	status=mxGetString(prhs[0],input_buf0,buflen0);										//<30>
	if (status!=0)												//
		mexWarnMsgTxt("Not enough space,String is truncated.");

	//
	status=mxGetString(prhs[1],input_buf1,buflen1);										//<34>
	if (status!=0)												//
		mexWarnMsgTxt("Not enough space,String is truncated.");

	stringplus(input_buf0,input_buf1,output_buf);			//

	//
	plhs[0]=mxCreateString(output_buf);													//<39>
	return;
}

⌨️ 快捷键说明

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