Borrar filtros
Borrar filtros

How to use coder.ceval to fprintf a new line ?

3 visualizaciones (últimos 30 días)
Giulia Coluccini
Giulia Coluccini el 26 de Jun. de 2015
Respondida: Giulia Coluccini el 21 de Ag. de 2017
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

Respuesta aceptada

Giulia Coluccini
Giulia Coluccini el 21 de Ag. de 2017
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.

Más respuestas (1)

ilker ozturk
ilker ozturk el 1 de Ag. de 2017
Have you solved this problem? I get same result as your problem. If you solved this problem could you write to me? In addition, When I push to start button in matlab function, Matlab has closed. I think, its a bug but I dont know how to pass this problem. (Matlab relase is Matlab 2012a )....
Have a good day..
  1 comentario
Giulia Coluccini
Giulia Coluccini el 21 de Ag. de 2017
Editada: Giulia Coluccini el 21 de Ag. de 2017
Yes, 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.

Iniciar sesión para comentar.

Productos

Community Treasure Hunt

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

Start Hunting!

Translated by