Октавный скрипт, показывающий старый результат каждый раз

#octave #fopen #fread #fseek

#октава #fopen #fread #fseek

Вопрос:

У меня есть скрипт octave, который считывает текстовый файл с функциями (fopen, fseek и fread). В этом файле хранятся двоичные данные.

Сначала я читаю файл в цикле, подобном этому:

 fid = fopen('myfile.txt', 'rb');
fseek(fid, 0);

for i = 1:5
  data = fread(fid, 1000);
  ......
  ...<Opertions I want to do>
  ......
  ......
endfor

  

Он принимает 1000 бит за одну итерацию и вычисляет результаты для каждых 1000 бит.
Затем я прочитал файл из другой позиции, изменив строку fseek, как показано ниже:

 fseek(fid, 1000);
  

Но все же он дает тот же результат, что и для первого слота (даже сейчас я не читаю первый слот), когда я читаю файл с самого начала.
Затем я сделал то же самое на другом компьютере, и у них это сработало в первый раз, но со второй попытки он показывает то же поведение. Сначала я подумал, что, возможно, есть проблема с моими скриптами или сгенерированным файлом, но затем он впервые заработал нормально на другом компьютере, тогда я думаю, что есть какая-то проблема с Octave. Может быть, мне нужно очистить память или что-то в этом роде.

Кто-нибудь когда-нибудь сталкивался с такой проблемой?

Комментарии:

1. Нет. Вы уверены, что содержимое вашего файла не повторяется каждые 1000 байт? Если нет, можете ли вы воспроизвести эту проблему на минимальном примере и скопировать, вставить его сюда, чтобы мы могли его попробовать? Какую версию octave и ОС вы используете?

2. Кроме того, можете ли вы а) проверить, был ли fseek он успешным, проверив его возвращаемое значение, и б) подтверждать положение курсора при каждом использовании ftell ?