Issue with fscanf not reading more than 1 row

10 次查看(过去 30 天)
I'm trying to pull data from a file using fscanf. The data file is formatted as you see in the fscanf below, and has 20 rows. I'm only getting 1 row's worth of data stored into A. I thought fscanf was supposed to read till the end of the file but it seems to only be reading the one line. Is there a way to correct it so it stores the data from all 20 rows?
fid = fopen('myfile.dat');
fgetl(fid); fgetl(fid);
A = fscanf(fid,'%f %f %f %f %*s %*s');
B = reshape(A,4,20)'

采纳的回答

Fangjun Jiang
Fangjun Jiang 2011-10-22
Check whether you have any special characters at the end of each line. I have similar program. It didn't have problem. Add fclose(fid) at the end just in case.
myfile.data contains the following
1 2 3 4 a b
1 2 3 4 a b
1 2 3 4 a b
1 2 3 4 a b
1 2 3 4 a b
1 2 3 4 a b
1 2 3 4 a b
1 2 3 4 a b
1 2 3 4 a b
1 2 3 4 a b
1 2 3 4 a b
1 2 3 4 a b
Run your code, it has
B =
1 2 3 4
1 2 3 4
1 2 3 4
1 2 3 4
1 2 3 4
1 2 3 4
1 2 3 4
1 2 3 4
1 2 3 4
1 2 3 4
  1 个评论
D
D 2011-10-22
Thanks, I actually found the problem after you said it worked. I added another %*s at the end of the formatting. I put one for the column of names, neglecting to consider first and last names, so it needed an extra to complete the line.

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Low-Level File I/O 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by