Форум Академгородка, Новосибирск > Fortran 90
Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Fortran 90
Форум Академгородка, Новосибирск > Компьютеры и сети > Программирование
Frost_User
Столкнулся с очень неприятной проблемой: требуется считать из файла колонку символов типа

250/1т** (т - русская)
293**
292**
291**


Как обычно я делал такие вещи:
character*100:: line
...
do while(1)
read(1,*) line
enddo


в результате получил, что переменная line принимает значения
250
*
*
*

Это что за такое? blink.gif

Потом решил считывание переделать так:
do while(1)
read(1,'(a10)') line
enddo

В переменную записалось:
250/1т
293**
292**
291**


При этом функция trim(line) не работает...
Как с этим быть? Каким образом можно считывать такой файл и в чем вообще ошибка, не пойму.
alex2000
Какой компилятор? На Intel Fortran код типа такого
CODE
IMPLICIT NONE

CHARACTER(100) :: line
INTEGER :: stat

OPEN (1, file = 'data1.txt')
OPEN (2, file = 'data2.txt')

DO WHILE (.TRUE.)
READ (1, "(a)", IOSTAT=stat) line
IF (stat /= 0) EXIT
WRITE (2,*) TRIM(line)
END DO
...

работает правильно (функция TRIM тоже).

Что касается ввода управляемого списком READ (1, *), то символ / воспринимается как конец данных, а * как повторитель.
Этим объясняется полученный Вами результат в этом случае.
Frost_User
Огромное спасибо за объяснение!
Надо будет мне почитать про дескрипторы, а не делать все наобум)
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Русская версия IP.Board © 2001-2024 IPS, Inc.