Передача строк

Этот пример показывает, как передать строки файлу MEX. Пример revord.c принимает вектор символа и возвращает символы в обратном порядке.

Анализ кода С

Чтобы видеть код, откройте revord.c в Редакторе MATLAB®.

Функция шлюза, mexFunction, создает струну до из входной переменной, prhs[0]. Путем изоляции переменных типа mxArray от вычислительной стандартной подпрограммы, revord, можно постараться не вносить существенные изменения в оригинал C и Код С++.

Преобразуйте входной параметр, prhs[0] к C-стилю представляет в виде строки input_buf.

input_buf = mxArrayToString(prhs[0]);

Выделите память для выходного аргумента, output_buf, строки C-стиля.

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

Размер выходного аргумента эквивалентен размеру входного параметра.

Вызовите вычислительную стандартную подпрограмму, revord.

revord(input_buf, buflen, output_buf);

Преобразуйте вывод, output_buf, к mxArray и присвойте plhs[0].

plhs[0] = mxCreateString(output_buf);

Не выпускайте память для этой переменной, потому что это - выходной аргумент.

Функция mxArrayToString, используемая, чтобы создать временную переменную input_buf, выделяет память; используйте функцию mxFree, чтобы выпустить память.

mxFree(input_buf);

Создание и тестирование примера

Запустите следующие команды из командной строки MATLAB.

Создайте пример.

mex -v revord.c

Вызовите функцию.

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

Похожие темы

Была ли эта тема полезной?