Pass Strings

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

C Code Analysis

To see the code, open the fileopen the file, 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.

mxFree(input_buf);

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
Was this topic helpful?