Форум программистов, компьютерный форум, киберфорум
Fortran
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
1 / 1 / 0
Регистрация: 23.03.2020
Сообщений: 22
1

Как правильно считывать символы из текстового файла?

08.08.2020, 19:02. Показов 1303. Ответов 10

Author24 — интернет-сервис помощи студентам
Есть такой код:
Fortran
1
2
3
4
5
6
program test
    character str(50)
    open(1,FILE='test.txt')
    read(1,*) str
    write(*,*) str
end program
Задумка такая, что нужно прочитать и внести содержимое символьного файла (неизвестного размера) в какую-нибудь переменную для дальнейших действий.
Но если количество символов не совпадет с размером переменной (в меньшую сторону) , то выдает выдаёт ошибку.
Как правильно считать символы и текстового файла неизвестного размера, чтобы это не обрывалось ошибкой ?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.08.2020, 19:02
Ответы с готовыми решениями:

Как считывать int из текстового файла?
есть файл текст.txt, который содержит запись "1". Как считывать эту единицу в виде int?

Как считывать переменные с текстового файла?
Здравствуйте, хотелось бы, чтобы переменные лежали в отдельном файле .txt в той же папке, где...

Как считывать каждые 2 символа из текстового файла?
Всем привет))) Ребят помогите пожалуйста!!! Кароч нужно написать прогу которая берет некий hex файл...

Как считывать только числа из текстового файла?
необходимо считать из текстового файла числа в массив. но если в файле будут еще и буквы, то...

10
6830 / 4890 / 2065
Регистрация: 02.02.2014
Сообщений: 13,048
08.08.2020, 19:44 2
решение в лоб: сделать строку очень большой, затем использовать команду trim
Fortran
1
2
3
4
5
6
7
program test
    character(1000) str
    open(1,FILE='test.txt')
    read(1,*) str
    write(*,*) str,"|"
    write(*,*) trim(str),"|"
end program
1
1 / 1 / 0
Регистрация: 23.03.2020
Сообщений: 22
08.08.2020, 20:31  [ТС] 3
Теперь выводится только 1й символ из файла (у меня это "1").
0
6830 / 4890 / 2065
Регистрация: 02.02.2014
Сообщений: 13,048
08.08.2020, 20:33 4
приложите файл с текстом
0
1 / 1 / 0
Регистрация: 23.03.2020
Сообщений: 22
08.08.2020, 20:36  [ТС] 5
обычный txt c содержанием (1 2 3 4 5 6 7 8 9 10)
0
6830 / 4890 / 2065
Регистрация: 02.02.2014
Сообщений: 13,048
08.08.2020, 20:43 6
так строка должна читаться или числа?
Fortran
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
! строка
program test
    character(100) str
    open(1,FILE='test.txt')
    read(1,'(a,$)') str
    write(*,*) str
end program
 
! числа
program test
    integer num
    open(1,FILE='test.txt')
    do i=1,10
        read(1,'(i2,$)') num
        write(*,*) num
    enddo
end program
0
1 / 1 / 0
Регистрация: 23.03.2020
Сообщений: 22
08.08.2020, 20:51  [ТС] 7
Извините за то, что неточно выразилась. Нужно было чтоб считывалось полное содержание файла (неизвестной величины) и записывалось в символьную строку
0
155 / 135 / 9
Регистрация: 21.10.2012
Сообщений: 413
23.08.2020, 08:23 8
Возможно прочитать файл посимвольно
с подсчетом количества символов,
потом создать allocatable строку нужного размера
и перечитать файл в неё.
0
0 / 0 / 0
Регистрация: 11.09.2020
Сообщений: 2
11.09.2020, 15:07 9
Здравствуйте.
Предполагается:
1) символьная переменная длиннее строки файла.
2) в файле ОДНА строка (т.е. отсутствуют символы конца строки и переноса строки)

Ваш код:

Fortran
1
2
3
4
5
6
 program test
    character str(50)
    open(1,FILE='test.txt')
    read(1,*) str
    write(*,*) str
 end program
Сделайте изменения:
4 read(1,'(a)') str
В этом случае не будет ошибки по EOF
При использовании str в программе пользуйтесь функциями trim(str) (обрезает концевые пробелы) и len_trim(str) (возвращает количество символов без концевых пробелов)
0
155 / 135 / 9
Регистрация: 21.10.2012
Сообщений: 413
18.09.2020, 12:07 10
Malinka2001,

Сначала вам нужно определить размер файла,
который будете читать.
Для этого используйте функцию
Fortran
1
inquire(unitvector, size=tot_len)
Не уверен, что эта возможность есть в фортран90,
она есть в фортран2003
0
WH
1577 / 807 / 189
Регистрация: 10.09.2013
Сообщений: 3,197
Записей в блоге: 3
18.09.2020, 13:37 11
Никогда не использовал, но скорее всего должно быть во всех современных компиляторах. С 2003 года слава богу прошло 17 лет
1
18.09.2020, 13:37
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.09.2020, 13:37
Помогаю со студенческими работами здесь

Как считывать строки из текстового файла и записывать их в файл?
До этого на java не программил, но щас потребовалось сделать это именно на этом языке. Желательно...

Как считывать из текстового файла, пропуская первую строку?
Имею такой код: procedure TF_knopka.fZagrClick(Sender: TObject); // Закрузка...

Как правильно считывать данные WAV-файла?
Нужна помощь в интернете много информации о структуре заголовка WAV-файла с ней вроде все...

Как правильно записывать и считывать информацию из бинарного файла
Всем привет, нужна помощь, есть код, оформлен вроде как правильно, вопрос такой - как правильно...

Считывать с текстового файла только цифры
К примеру есть текстовый файл Hello 2 World 35 и мне нужно считать с него только цифры 2,3, 5 и при...

Как вставить в каждую строку текстового файла символы?
Пожалуйста подскажите как bat файлик сделать, чтобы он в каждую строку текстового файла в начало...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru