keep fscanf past wrong format value

10 views (last 30 days)
Hello, im having this problem with feof function and fscanf. I want to read all the whole numbers but it stops when it reaches something that is not. How can I make it ignore that and keep scanning?
fid = fopen("testdata.txt","r");
a = [];
i = 0;
while ~feof(fid)
i = i + 1;
a(i) = fscanf(fid, '%d', 1);
end
Unable to perform assignment because the left and right sides have a different number of elements.
fclose(fid);
  1 Comment
Rik
Rik on 15 May 2023
Wouldn't you be better off reading the entire file and then matching each line with a regular expression?

Sign in to comment.

Accepted Answer

Walter Roberson
Walter Roberson on 15 May 2023
Unless you have integers that might have value outside of +/- 2^53 then there is little point using a %d format. Use a %f format instead: that will accept floating point numbers without any reading problems. You can always check that everything is integer afterwards.

More Answers (0)

Tags

Products

Community Treasure Hunt

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

Start Hunting!