MATLAB Answers

how can set values to a const mxArray ?

15 views (last 30 days)
omid jab
omid jab on 6 May 2013
Hi all, Suppose defined a const mxArray *ptr[2]. I wanna set *ptr[0] to a string such as 'mystr', and set *ptr[1] to a int varible such as 10. how can I do it? for example help me to modify this code:
const mxArray *prhs[2]; char a = 'mystr'; prhs[0] = a; prhs[1] = 10;

Accepted Answer

José-Luis on 6 May 2013
Edited: José-Luis on 6 May 2013
Looks like you are talking about C/C++ code. If that is the case, I am confused. How could:
char a = 'mystr'
ever work? That should not work for one of two reasons: either a should be a pointer to a character array or mystr a single character.
That being said, there are some other issues with your code. You declare prhs to be a pointer to a const mxArray. Then you try to assign values to prh, something that you have never declared. Finally you are trying to assign a character and a numeric value to prh, which is a pointer to an mxArray. That's a no-no.
Anyway, knowing what errors you get and what you are actually trying to do would greatly facilitate the task of those trying to help you.
omid jab
omid jab on 6 May 2013
thanks. these examples are very good.

Sign in to comment.

More Answers (3)

Jan on 6 May 2013
Edited: Jan on 6 May 2013
mxArray *prhs[2] is a field of pointers to mxArrays. The elements must be pointers to mxArrays then, not a pointer to a string or even an integer value directly.
Even char a='mystr' will fail, because a must be a pointer to a char, when it should carry a string in C.
I assumed there is a confusion with the names prhs and prh.
These are such fundamental problems concerning C that I do not think, that a solution will really help. You have to understand the bascic of C at first, befaore you can use it securely. And afterwards you can include the functionality of Matlab arrays. Read the C-Mex examples shipped with Matlab carefully to learn more details.
omid jab
omid jab on 6 May 2013
thanks, I have started learning C.

Sign in to comment.

Azzi Abdelmalek
Azzi Abdelmalek on 6 May 2013
Edited: Azzi Abdelmalek on 6 May 2013
prh{1}='mystr' % Matlab does not allow 0 as index (it must be logical or positive integer)
Look at cell array
Jan on 6 May 2013
@omid jab: On one hand it might be obvious, that the shown code should be C (but it is only partially). On the other hand it is a good practice to mention in a Matlab forum explicitly, when you ask a question about another language.

Sign in to comment.

omid jab
omid jab on 6 May 2013
@ José-Luis, Azzi Abdelmalek, and Jan Simon, thaks for your great guidances.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!