2014-10-05 3 views
1

У меня есть текстовый файл, как это:`textscan` читает открытый файл только один раз

3 
bcs 
acd 
hgf 

Первое число показывает количество строк и столбцов следующего блока символов. (Здесь 3 означает блок 3x3)

Я хочу прочитать этот блок строк. Я делаю это как

fid = fopen('file.txt'); 
A = textscan(fid,'%s',3,'HeaderLines',1); 

и возвращает правильный вывод:

A =

{3x1 cell} 

Но если я снова хочу прочитать ту же строку и сохранить его снова, он возвращается и пустой массив ячеек:

B = textscan(fid,'%s',3,'HeaderLines',1); 

В =

{0x1 cell} 

Чтобы сделать его работу правильно, я должен до fclose файла и fopen его снова. Я имею в виду, я могу прочитать файл только после его открытия.

Как я могу решить эту проблему?

+0

В каком случае вам нужно заново прочитать файл, а не просто делать 'B = A; '? – nkjt

ответ

2

Используйте frewind, чтобы вернуться в начало файла, а затем вы можете использовать textscan снова:

fid = fopen('file.txt'); 
A = textscan(fid,'%s',3,'HeaderLines',1); 
frewind(fid) 
B = textscan(fid,'%s',3,'HeaderLines',1); 
+0

Итак, когда я читаю файл, он доходит до конца последнего символа, который был прочитан? – user215721

+1

Yas, я думаю, что так работает. Это похоже на «fread»: указатель файла расширен, когда вы читаете его содержимое –

Смежные вопросы