fscanf/Pointing to a file in MATLAB Coder?

10 views (last 30 days)
Ryan Kalaigian
Ryan Kalaigian on 17 Aug 2018
Edited: Ryan Livingston on 17 Aug 2018
Hello, I am new to MATLAB coder and I am having some trouble translating the way I translate fscanf using coder.ceval. I know codegen supports fopen but not fscanf. Here's what I have:
coder.cinclude("<stdio.h>");
f = fopen(z,'r');
f = coder.opaque('FILE*','NULL');
coder.ceval('fscanf',f,formatSpec, A); %should read in values into 2-by-x double array
fclose(f);
z is a string and the name of the file, formatSpec is '%d %d' and A is the appropriate size. How do I get the pointer to the file to be z? Any suggestions would be appreciated.

Answers (1)

Ryan Livingston
Ryan Livingston on 17 Aug 2018
Edited: Ryan Livingston on 17 Aug 2018
Check out the example:
which shows using fread via coder.ceval. You should be able to switch:
f = coder.opaque('FILE*','NULL');
f = fopen(z,'r');
Also don't forget to NULL-terminate your strings before passing to C. That example uses a helper function:
% Create a NUL terminated C string given a MATLAB string
function y = c_string(s)
y = [s 0];
like so:
f = fopen(c_string(z),c_string('r'));
You'll need to preallocate A before reading into it and call coder.ceval('fclose',f) like the documentation example shows.

Categories

Find more on Generating Code in Help Center and File Exchange

Products


Release

R2018a

Community Treasure Hunt

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

Start Hunting!