Посмотрите, что ваш код делает при первом прохождении цикла:
tline = fgetl(f); % Read in 1st line
while ischar(tline) % Make sure it's a char array
tline = fgetl(f); % Discard 1st line, get 2nd line
C=strsplit(tline) % Work with the line
disp(C) % Display the line
end % Go back to while...
В конце цикла вы, конечно же, возвращаетесь к оператору while
, где вы проверяете, чтострока, которую вы только что обработали, фактически является строкой.Затем вы читаете в новой строке и обрабатываете его.То есть каждый раз, когда вы сначала обрабатываете строку, а затем проверяете, что это строка.Кроме того, вы никогда не обрабатываете первую строку, прочитанную из файла.Вам нужно отменить эти тесты.Один из способов сделать это:
tline = fgetl(f);
while ischar(tline)
C=strsplit(tline)
disp(C)
tline = fgetl(f);
end
Здесь вы проверяете, что строка является строкой, обрабатываете ее, затем читаете новую, затем проверяете, является ли она строкой и т. Д.
Более хороший способ написать тот же цикл:
while 1
tline = fgetl(f);
if ~ischar(tline), break, end
C=strsplit(tline)
disp(C)
end
Здесь вам не нужно повторять строку fgetl
, и порядок вещей немного яснее: вы читаете строку, вы тестируетеэто, тогда вы печатаете это.while 1
- это бесконечный цикл, вы выходите из него с помощью break
.