Issue with fscanf not reading more than 1 row

4 vues (au cours des 30 derniers jours)
D
D le 22 Oct 2011
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)'

Réponse acceptée

Fangjun Jiang
Fangjun Jiang le 22 Oct 2011
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 commentaire
D
D le 22 Oct 2011
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.

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Large Files and Big Data dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by