Command fscanf does not read zero

Hello,
I am using a command "fscanf", but it doesn't read zero at the end of the line.
A file which I am reading contains this formatting:
1 552.45 1 1 1 0
2 870.38 1 2 2 0
name='test.txt';
fid1=fopen(name,'rt');
ab=fscanf(fid1,'%4f %5f %4f %4f %4f %4f',[1,6])
Can you help me to correct it?

1 comentario

Mathew Smith
Mathew Smith el 30 de Jun. de 2026
I have attached the text file. With your command I am getting this result below.
It ignores zero and reads number "2" from the second line.
1.0000 552.4500 1.0000 1.0000 1.0000 2.0000
870.3800 1.0000 2.0000 2.0000 0 0

Iniciar sesión para comentar.

Respuestas (2)

Stephen23
Stephen23 el 30 de Jun. de 2026
Editada: Stephen23 el 30 de Jun. de 2026
This looks correct to me:
fid = fopen('test.txt','rt');
mat = fscanf(fid,'%f',[6,Inf]).'
mat = 2×6
1.0000 552.4500 1.0000 1.0000 1.0000 0 2.0000 870.3800 1.0000 2.0000 2.0000 0
<mw-icon class=""></mw-icon>
<mw-icon class=""></mw-icon>
fclose(fid);
For comprison:
type test.txt
1 552.45 1 1 1 0 2 870.38 1 2 2 0
Walter Roberson
Walter Roberson el 30 de Jun. de 2026
Movida: Walter Roberson el 30 de Jun. de 2026
Your width field is not wide enough for the second field, so the trailing '5' is read as being the next field.
name = 'test.txt';
fid1 = fopen(name,'rt');
ab = fscanf(fid1,'%4f %5f %4f %4f %4f %4f',[1,6])
ab = 1×6
1.0000 552.4000 5.0000 1.0000 1.0000 1.0000
<mw-icon class=""></mw-icon>
<mw-icon class=""></mw-icon>
frewind(fid1)
ab = fscanf(fid1,'%4f %6f %4f %4f %4f %4f',[1,6])
ab = 1×6
1.0000 552.4500 1.0000 1.0000 1.0000 0
<mw-icon class=""></mw-icon>
<mw-icon class=""></mw-icon>

Categorías

Más información sobre Entering Commands en Centro de ayuda y File Exchange.

Productos

Versión

R2019b

Preguntada:

el 30 de Jun. de 2026

Movida:

el 30 de Jun. de 2026

Community Treasure Hunt

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

Start Hunting!

Translated by