Как я могу прочитать 2D-файл, содержимое которого не разделено пробелами в Фортране - PullRequest
2 голосов
/ 02 апреля 2019

У меня есть матрица, хранящаяся в файле (number.txt), например:

12323456  
54254311  
76534522  

Как я могу прочитать такую ​​матрицу в Фортране, так что результат будет:

1 2 3 2 3 4 5 6  
5 4 2 5 4 3 1 1  
7 6 5 3 4 5 2 2  

Очень легко разделить эти столбцы с помощью awk и прочитать их на Фортране.Но я хотел бы знать, смогу ли я сделать все это, используя только Фортран.После того, как я закончу, мне нужно будет умножить эту матрицу путем ее транспонирования.

1 Ответ

1 голос
/ 02 апреля 2019

Форматированный ввод и вывод в Fortran основан на полях . Поля не обязательно должны быть разделены пробелами. Здесь вы можете рассматривать данные 12323456 как одно поле шириной 8 или 8 полей шириной 1 (или другими комбинациями).

Если вы хотите прочитать значение из целочисленного поля шириной 1, элемент формата I1 позволит прочитать это значение. Если у вас есть восемь целочисленных полей шириной 1 рядом друг с другом, 8I1 позволит читать их.

implicit none
character(8) :: input(3)=['12323456','54254311','76534522']
integer i, values(8)

do i=1,3
  read(input(i),'(8I1)') values
  print '(8(I1,:,1X))', values
end do

end
...