Matlab Coder and Ceval
14 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
I'm trying to use matlab coder and would like to display some text on the terminal from which I run the compiled C code. I'm having issues with the simple printf
The code in matlab is:
for n=2:10
coder.ceval('printf','%d',n);
end
where n is the thing I want to print out to teh screen
The code I end up getting is:
static const char_T cv0[2] = { '%', 'd' };
char_T cv1[2];
n=2;
while (n <= 10)
for (i0 = 0; i0 < 2; i0++) {
cv1[i0]=cv0[i0];
}
printf(cv1, (real_T)n);
which does not seem to output the value of n, but instead just 0s
The code I WANT is:
printf("%d",n);
which does what I want when I put it in the .c file myself and compile
Any help would be appreciated
0 Commenti
Risposta accettata
Kaustubha Govind
il 24 Ago 2011
Try:
for n=2:10
coder.ceval('printf','%d ',int32(n));
end
or
for n=2:10
coder.ceval('printf','%f ', n);
end
In MATLAB, 'n' is double by default.
EDIT:
To pass in a newline character, you can use the ASCII value (=10 for \n):
formatString = ['%d' char(10)];
for n=2:10
coder.ceval('printf', formatString, int32(n));
end
4 Commenti
Kaustubha Govind
il 25 Ago 2011
@CP: When you say you do printf("%d",n) manually, do you mean you've written C code to do this? If yes, you are probably declaring 'n' as an int. MATLAB Coder generates 'n' as a real_T (double).
I edited my answer to show how to insert a newline character.
Più risposte (1)
Alexander Bottema
il 30 Set 2011
There's a serious flaw in the example given. C uses NUL character for string termination, therefore you need to do:
formatString = ['%d' 10 0];
coder.ceval('printf', formatString, int32(n));
Otherwise you can get unexpected crashes.
0 Commenti
Vedere anche
Categorie
Scopri di più su Logical in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!