explanation for script containing while loop
1 visualizzazione (ultimi 30 giorni)
Mostra commenti meno recenti
I was given a script for reading data from a specific file, and although the script works, I don't understand one section of it, it reads as follows:
fid = fopen(Folder);% open file to read
fseek(fid,0,-1);% set read position to beginning of file,
Linechk = strcmp(fgetl(fid),'*END*');% read in line 1
while Linechk == 0
Linechk = strcmp(fgetl(fid),'*END*');% go through lines until '*END*'
end
The main aim here is to find the line where the string END appears, following the appearance of END the data is stored. The question I have is that Linechk is equal to 0 initially (i.e. before the loop), then in following the loop it is equal to 1. I can't understand why it returns 1, surely the while loop only repeats when Linechk is equal to 0 therefore how does the condition remain true when it equals 1?
Entire code:
fid = fopen(Folder);% open file to read
fseek(fid,0,-1);% set read position to beginning of file,
% fseek(fileID, offset, origin).
Linechk = strcmp(fgetl(fid),'*END*');% read in line 1
while Linechk == 0
Linechk = strcmp(fgetl(fid),'*END*');% go through lines until '*END*'
end
n = 1;
while 1;
tline = fgetl(fid);% read in line
if ~ischar(tline), break, end;% if end of file, break and finish
data(n,:) = sscanf(tline,'%f');% put numbers in a matrix (in columns)
n = n+1;
end
fclose(fid);% close file
0 Commenti
Risposta accettata
Wayne King
il 6 Nov 2012
I'm not sure I understand your question. Presumably, the first fgetl() call does not obtain the string END, so the string compare is 0. Then the while loop continues the string comparison until the string is END at which time the value of Linechk goes to 1.
Once you exit the loop the value of Linechk is 1. Or perhaps better stated, Linechk equal to 1 keeps the while loop from being evaluated.
4 Commenti
Walter Roberson
il 6 Nov 2012
In such a situation, the fgetl() after that would fetch line 10, the one after that would fetch line 11, and so on.
Più risposte (0)
Vedere anche
Categorie
Scopri di più su Multidimensional Arrays in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!