Чтение пропущенных данных из файла - PullRequest
0 голосов
/ 30 августа 2018

Мне нужно прочитать файл, который содержит числовые данные (в основном действительные числа), но есть также некоторые пропущенные данные, которые отмечены звездочкой (*). Я заранее не знаю положения звездочек, и мне нужно найти общее количество действительных (числовых) данных и общее количество пропущенных данных (звездочек).

Я попытался сделать это с помощью 'select case', вложенного в цикл do, но не получилось, потому что

  1. Я не могу использовать реальный тип для селектора
  2. Я не думаю, что могу поставить звездочки в реальную матрицу

Файл данных выглядит примерно так

1    0.673070
2    0.750597
3    *
4    0.484100

Есть предложения?

1 Ответ

0 голосов
/ 31 августа 2018

Да, в будущем предоставьте дополнительную информацию и опубликуйте [Пример минимального, полного и проверяемого] (https://stackoverflow.com/help/mcve) кода, который пытается его прочитать.

Но, если вы знаете, что каждая строка имеет либо реальное число, либо *, я бы сделал что-то вроде этого:

Character(len=8) :: LineRead
Real :: RealNumber
open(42,file='MyFile.txt')

do (whichever kind of loop you need to control the input)
   read(42,'(a8)') LineRead
   if (LineRead <> '*       ')
     read(LineRead,'(f8.6)') RealNumber
     ! Increment some sort of valid data counter
   end if
end do

Если вы не знакомы с этой техникой, она называется чтением из внутреннего файла. Любая символьная переменная может быть «прочитана» таким образом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...