Fortran: добавить столбец в файл (т. е. пропустить различное количество горизонтальных пробелов)

Я чертовски новичок в Fortran (f90), и некоторые, казалось бы, простые проблемы вызывают сильную головную боль... Спасибо, что помогли мне с этим:

Мой код проходит через цикл, обрабатывает данные и записывает их в файл. Я хотел бы, чтобы эти данные записывались в столбцы одного и того же файла до завершения цикла.

OPEN (unit=11,file=filename // '.csv')
WRITE(11,'(i4,A1,f10.6)') NUM4 , tab, NUMfloat10_6
CLOSE(11)

Этот код отлично работает для сохранения одного набора данных. "вкладка" определяется как char(9); имя файла задается пользователем в начале скрипта.

В циклическом режиме я хотел бы добавить еще одну вкладку как «A1» и еще одну NUMfloar10_6 («f10.6»). Однако я не могу так что-то вроде этого:

OPEN (unit=11,file=filename // '.csv')
WRITE(11,'(Tk,i4,A1,f10.6)') NUM4 , tab, NUMfloat10_6
CLOSE(11)

где k определяется как целое число, увеличивающееся с количеством циклов * 15.

Как мне решить эту проблему? Как «добавить» столбцы в файл, не зная, сколько пробелов нужно пропустить?


person offeltoffel    schedule 11.06.2014    source источник
comment
вы не можете просто открыть файл и добавить к нему по столбцам, вам придется либо читать файл построчно, добавлять данные, записывать строку или использовать форматированный прямой режим.   -  person steabert    schedule 11.06.2014
comment
stackoverflow.com/questions/ 23834138/   -  person agentp    schedule 11.06.2014


Ответы (1)


Если вы используете ifort, просто добавьте скобки <k>

  k = 2
  WRITE(*,'(T<k>,A)'), "Hello World!"

  k = 6
  WRITE(*,'(T<k>,A)'), "Hello World!"

  k = 16
  WRITE(*,'(T<k>,A)'), "Hello World!"

производит:

 Hello World!
     Hello World!
               Hello World!
person Peter    schedule 11.06.2014
comment
Я скомпилировал с помощью ifort, посмотрите пример в конце страницы - person Peter; 11.06.2014
comment
Обратите внимание, что описание этой функции выделено зеленым цветом. Это расширение. Если вы добавите /stand (или -stand) в свою командную строку, ifort должен пожаловаться. - person IanH; 11.06.2014
comment
хорошо, обновленный ответ. Спасибо, я не знал о значении зеленого - person Peter; 11.06.2014