Hello, everybody! I'd like to generate C code from an m-file which makes use of MATLAB fprintf function as follows:
fprintf('Time level %-*.*f [s], Iterations: %d\n',field_width,precision,time,iter);
Since fprintf is not supported for the code generation, nor can I use coder.extrinsic method, I turn to a question:
How to rewrite the command using coder.ceval method and the standard C library function printf? To be more specific, what should the arguments be like in coder.ceval('printf', arguments); ?
While not using field_width and precision, C code generated from the following one executes without a problem:
s1=['%s%f%s%d' 10 0];
s2=['Time level ' 0];
s3=['[s], Iterations: ' 0];
coder.ceval('printf',s1,s2,time,s3,int32(iter));
However, including the asterisks and left-justify options cause segmentation fault whenever the generated C code is compiled, built and run. Any help is appreciated!

3 件のコメント

Kaustubha Govind
Kaustubha Govind 2012 年 5 月 29 日
I wonder if this is a bug. Could you try contacting MathWorks Tech Support about this?
Tomas Jurena
Tomas Jurena 2012 年 5 月 30 日
Thank you for your comment. It really seems to be a bug, because running a MEX function causes MATLAB crash as well. I'll contact Tech support.
Tomas Jurena
Tomas Jurena 2012 年 5 月 30 日
OK, no need to do that :) See the answer given by Fred Smith.

サインインしてコメントする。

 採用された回答

Fred Smith
Fred Smith 2012 年 5 月 30 日

2 投票

This example worked for me:
function simple_printf
s1=['%s%-*.*f%s%d' 10 0];
s2=['Time level ' 0];
s3=['[s], Iterations: ' 0];
iter = 32;
time = 2.5;
field_width=int32(20);
precision=int32(3);
coder.ceval('printf',s1,s2,field_width,precision,time,s3,int32(iter));
Is your code different?
-Fred

2 件のコメント

Tomas Jurena
Tomas Jurena 2012 年 5 月 30 日
Yes, it is just a little bit different to yours, but the difference explains the origin of the problem. Both field_width and precision must be cast to an integer type. Now, it works for me, too. Shame on me, that I forgot about it :) Thank you very much!
Kevin Berndsen
Kevin Berndsen 2015 年 3 月 18 日
Great workaround for the string termination problem. Thanks!

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File Exchange で Matrix Indexing についてさらに検索

製品

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by