155GIT1 / 4. cvičení: Porovnání verzí
mBez shrnutí editace |
mBez shrnutí editace |
||
Řádek 14: | Řádek 14: | ||
<source lang=octave> | <source lang=octave> | ||
fid = fopen('pr4uk1.txt','r'); | fid = fopen('pr4uk1.txt','r'); | ||
bxy = fscanf(fid,'%f',[3 | bxy = fscanf(fid,'%f',[3 inf]); | ||
bxy = bxy' | bxy = bxy' % pro shodné rozměry matice jako v datovém souboru | ||
fclose(fid); | fclose(fid); | ||
% přeskakování položek | % přeskakování položek | ||
xy = fscanf(fid,'%*f %f %f',[2 | fid = fopen('pr4uk1.txt','r'); | ||
xy = xy'; | xy = fscanf(fid,'%*f %f %f',[2 inf]); | ||
xy = xy' | |||
fclose(fid); | |||
</source> | </source> | ||
''(čtení z řetězce)'' | ''(čtení z řetězce / z textové proměnné)'' | ||
<source lang=octave> | <source lang=octave> | ||
s = sscanf('10.2 5.222','%f %f') | s = sscanf('10.2 5.222','%f') | ||
</source> | |||
''(čtení textových souborů z hlavičkou)'' | |||
<source lang=octave> | |||
fid = fopen('pr4uk2.txt','r'); | |||
radek = fgetl(fid); % evtl. fgets(fid) pro načtení řádku včetně znaku zalomení řádku | |||
rs = sscanf(radek,'%d') | |||
r = rs(1); | |||
s = rs(2); | |||
bxyz = fscanf(fid,'%f',[s r])' | |||
fclose(fid); | |||
vstup = fopen('pr4uk3.txt','r'); | |||
radek = fscanf(vstup,'%s',4) | |||
bxyh = fscanf(vstup,'%f',[4 inf])' | |||
fclose(vstup); | |||
</source> | </source> | ||
Verze z 15. 3. 2023, 20:11
Čtení formátovaných dat z textových souborů
Náplň
- čtení dat z textového souboru do matice (ke stažení pr4uk1.txt, pr4uk2.txt, pr4uk3.txt, pr4uk4.txt)
Ukázky
Formátované čtení dat
(čtení z textového souboru)
fid = fopen('pr4uk1.txt','r');
bxy = fscanf(fid,'%f',[3 inf]);
bxy = bxy' % pro shodné rozměry matice jako v datovém souboru
fclose(fid);
% přeskakování položek
fid = fopen('pr4uk1.txt','r');
xy = fscanf(fid,'%*f %f %f',[2 inf]);
xy = xy'
fclose(fid);
(čtení z řetězce / z textové proměnné)
s = sscanf('10.2 5.222','%f')
(čtení textových souborů z hlavičkou)
fid = fopen('pr4uk2.txt','r');
radek = fgetl(fid); % evtl. fgets(fid) pro načtení řádku včetně znaku zalomení řádku
rs = sscanf(radek,'%d')
r = rs(1);
s = rs(2);
bxyz = fscanf(fid,'%f',[s r])'
fclose(fid);
vstup = fopen('pr4uk3.txt','r');
radek = fscanf(vstup,'%s',4)
bxyh = fscanf(vstup,'%f',[4 inf])'
fclose(vstup);
Změna polohy kurzoru v souboru
fid = fopen('s.txt','w');
fprintf(fid,'%f\n',[1 2; 3 4]');
fclose(fid);
type s.txt
1.000000
2.000000
3.000000
4.000000
fid = fopen('s.txt','r');
a = fscanf(fid,'%f',[1, inf])
b = fscanf(fid,'%f',[2, inf]) % kurzor je již na konci datového souboru s.txt
fseek(fid,0,'bof'); % totožně fseek(fid,0,-1); anebo frewind(fid);
b = fscanf(fid,'%f',[2, inf])
fseek(fid,2,'bof');
c = fscanf(fid,'%f',[2, inf])
fclose all;