MATLAB: How to use coder.ceval to fprintf a new line

coder.ceval fprintfEmbedded Coder

Matlab R2012b does not support fprint for code generation, so I am using coder.ceval to call the C fprintf function. The problem is on printing a new line, infact the instruction coder.ceval(‘fprintf’, f, ‘%lf\n‘, 10.0); produces as output in the file 10.000000\n €ÿ Moreover the instructions coder.ceval(‘fprintf’, f, ‘%lf\n‘, 10.0); coder.ceval(‘fprintf’, f, ‘%lf\n‘, 20.0); produce as output in the file 10.000000\n&bÿ20.000000\n
How is possible to get the new line?
It can be useful to underline that using printf instead of fprintf the problem does not exist

Best Answer

At the end I solved this problem after several attempts. I discovered that char(10) is the symbol to obtain a new line.
Use these lines:
fname = coder.nullcopy(char(zeros(1,32)));
coder.ceval('sprintf', coder.wref(fname), c_string('FILE_NEW.txt'));
f = coder.opaque('FILE*', 'NULL');
f = coder.ceval('fopen', fname, c_string('a')); coder.ceval('fprintf', f, c_string('%s %s'), c_string('Hello I am Giulia'), c_string(char(10)));
coder.ceval('fclose', f);
where the c_string function is defined as follows:
function y = c_string(s)
y = [s char(0)];
end
It works in Matlab R2012b.