This is machine translation

Translated by Microsoft
Mouseover text to see original. Click the button below to return to the English version of the page.

Note: This page has been translated by MathWorks. Click here to see
To view all translated materials including this page, select Country from the country navigator on the bottom of this page.

Pass Strings

This example shows how to pass strings to a MEX file. The example revord.c accepts a character vector and returns the characters in reverse order.

C Code Analysis

To see the code, open revord.c in the MATLAB® Editor.

The gateway function, mexFunction, creates a C string from the input variable, prhs[0]. By isolating variables of type mxArray from the computational subroutine, revord, you can avoid making significant changes to your original C and C++ code.

Convert the input argument prhs[0] to a C-style string input_buf.

input_buf = mxArrayToString(prhs[0]);

Allocate memory for the output argument, output_buf, a C-style string.

output_buf = mxCalloc(buflen, sizeof(char));

The size of the output argument is equivalent to the size of the input argument.

Call the computational subroutine, revord.

revord(input_buf, buflen, output_buf);

Convert the output, output_buf, to an mxArray and assign to plhs[0].

plhs[0] = mxCreateString(output_buf);

Do not release memory for this variable because it is an output argument.

The mxArrayToString function, used to create the temporary input_buf variable, allocates memory; use the mxFree function to release the memory.


Build and Test Example

Run the following commands from the MATLAB command line.

Build the example.

mex -v revord.c

Call the function.

x = 'hello world';
y = revord(x)
y =
dlrow olleh

Related Topics