Мне нужно прочитать файл, содержащий числовые данные (в основном реальные), но есть также некоторые недостающие данные, отмеченные звездочкой (*). Я не знаю заранее положения звездочек, и мне нужно найти полные действительные (числовые) данные и полные недостающие данные (звездочки).
Я попытался сделать это с помощью 'select case', вложенного в цикл do, но не смог, потому что
Файл данных выглядит примерно так
1 0.673070
2 0.750597
3 *
4 0.484100
Какие-либо предложения?
Нам действительно нужно гораздо больше информации. Подробности о файле, вашем коде и так далее ... См. Как спросить
Я предлагаю OP отредактировать файл данных с помощью чего-то вроде sed или ее любимого редактора и удалить все *. Проще написать код для работы с пропущенными значениями, чем со значением, которое может быть проанализировано как реальное, а может и нет.





Да, в будущем предоставьте дополнительную информацию и опубликуйте [минимальный, полный и проверяемый пример] (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
Если вы не знакомы с этой техникой, это называется чтением из внутреннего файла. Таким образом можно «прочитать» любую символьную переменную.
Я не добавлял никакого кода, потому что знал, что то, что у меня было, было совершенно неправильным. В конце концов, я сам придумал, как решить проблему с помощью iostat. Я действительно не знаком с техникой, которую вы использовали! Спасибо, что разместили!
Не показывая вашей попытки, нам особо нечего продолжать, и вопрос очень широкий. Однако вы можете найти хорошую подсказку в этот вопрос. Если у вас что-то подобное, но у вас все еще есть проблемы, задайте редактировать этот вопрос, указав эти детали.