Octave - fskipl: неверный номер потока

Я получил сообщение об ошибке: «Недопустимый список параметров» из моей функции, которая позволила Octave открыть текстовый файл и прочитать его, чтобы получить входные данные для моей работы.

function [machNumbers]=readsrm(testfile.txt) 
  fid = fopen('testfile.txt','w');
  fskipl(fid, 3);

  # read number of machnumber
  numMachNumber = fscanf(fid, "%i", 1)
  fscanf(fid, "%s", 5);
  machNumbers = fscanf(fid, "%f", numMachNumber);

  fclose(fid);
endfunction

Обновлено:

Я обновил свой код и теперь у меня ошибка: «error: fskipl: invalid stream number = -1».

Мой код выглядит так:

function [machNumbers, weights, altitudes, specificRanges]=readsrm(myfilename)
myfilename = "filename"

  fid = fopen(myfilename,'r');
  fskipl(fid, 3);

fclose(fid);
endfunction

Обновлено:

Вышеупомянутые проблемы решены, спасибо. :) Теперь проблема в том, что мой цикл for не работает правильно. С этим кодом я не получаю никаких параметров из своего текстового файла.

Вот код:

function [machNumbers, weights, altitudes, specificRanges]=readsrm(myfilename)
myfilename = "testfile.txt"

  fid = fopen(myfilename,'r');
  fskipl(fid, 3);

  # read number of machnumber
  numMachNumber = fscanf(fid, "%i", 1)
  fscanf(fid, "%s", 5);
  machNumbers = fscanf(fid, "%f", numMachNumber);

  # read weights
  numWeights = fscanf(fid, "%i", 1);
  fscanf(fid, "%s", 5);
  weights = fscanf(fid, "%f", numWeights)

  # rad altitudes 
  numFl = fscanf(fid, "%i", 1)
  fscanf(fid, "%s", 5);
  altitudes = fscanf(fid, "%f", numFl)

  irrelevantValues = fscanf(fid, "%s", 7)
  for flightLevel= 1:numFl
    for weight = 1:numWeights
      specificRanges(flightLevel, weight, 1:numMachNumber) = fscanf(fid, "%f", numMachNumber);
    endfor
  endfor
  fclose(fid);
endfunction

Я не использовал октаву, но, может быть, использовать " " вместо ' ' (как в остальной части вашего кода)?

Ander Biguri 14.09.2018 11:23

и кстати, вы никогда не должны добавлять скриншоты исходного кода

Andy 14.09.2018 13:07

Вы не должны постепенно добавлять все больше и больше вопросов, как только вы получите ответ на свой первоначальный вопрос. Вместо этого, пожалуйста, приведите его в форму, чтобы он мог быть полезен другим, и начните новый вопрос с недавно возникшей проблемой.

Andy 14.09.2018 16:41
Что такое компоненты React? Введение в компоненты | Типы компонентов
Что такое компоненты React? Введение в компоненты | Типы компонентов
Компонент - это независимый, многократно используемый фрагмент кода, который делит пользовательский интерфейс на более мелкие части. Например, если мы...
1
3
1 624
1

Ответы 1

function [machNumbers]=readsrm(testfile.txt) 

не является действительным объявлением функции. Вы хотите указать допустимое имя переменной, например

function [machNumbers]=readsrm(myfilename)
  fid = fopen(myfilename,'r');
  ...

а затем вызовите свою функцию как

machNumbers = readsrm("testfile.txt");

и, конечно, вы, очевидно, хотите читать из fid, поэтому вам нужно fopen файл с "r" (доступ для чтения), а не с "w" (доступ для записи)

Привет, Энди, спасибо за ответ. Я обновил свой код. Но теперь я получил эту ошибку. "ошибка: fskipl: недопустимый номер потока = -1" My code Looks like this: function [machNumbers, weights, altitudes, specificRanges]=readsrm(myfilename) myfilename = "filename" #function [machNumbers, weights, altitudes, specificRanges]=readsrm(filename) fid = fopen(myfilename,'r'); fskipl(fid, 3); fclose(fid); endfunction

Würzfleisch 14.09.2018 15:29

если fopen возвращает -1, это означает, что он не нашел файл. И попробуйте обновить свой код в вопросе. Есть несколько повторяющихся частей, и я не уверен, что это просто ошибка при вставке вашего кода сюда, в Stackoverflow, или вы действительно пытаетесь это сделать.

Andy 14.09.2018 15:40

Да, я сделал это несколько минут назад. :)

Würzfleisch 14.09.2018 15:48

Я сомневаюсь, что имя вашего файла - «имя файла» или это так? И нет смысла перезаписывать аргумент функции myfilename внутри функции.

Andy 14.09.2018 15:54

Я объявил свою переменную myfilename с именем файла следующим образом: myfilename = "filename.txt". Если я этого не сделаю, то получу ошибку: «error: 'myfilename' undefined (...)».

Würzfleisch 14.09.2018 16:16

Другие вопросы по теме