Позвольте мне привести вам пример, в котором содержимое текстового файла записывается в массив динамических символов. Если вы используете FORTRAN, тогда я настоятельно рекомендую вам использовать явное объявление переменных. Это может быть вызвано командой
implicit none
В противном случае вам нужно позаботиться о неявном определении переменной FORTRAN, которое можно найти здесь :
Переменные, начинающиеся с I .. N: INTEGER
Переменные, начинающиеся с других букв: REAL
Расширение входного файла text.txt
до 6 строк:
1. ABC
2. XYZ
3. FOO
4. BAR
5. BYE
6. CKE
Пожалуйста, используйте эту программу для создания и заполнения массива символов, а также для его вывода на стандартный вывод:
program readText
implicit none
integer :: FID = 1
character*256 :: CTMP
! 1. Assuming that no line of text.txt contains more than 256 characters
character*256, allocatable :: MY_ARRAY(:)
integer :: I = 0, IERR = 0, NUM_LINES = 0
open(unit=FID,file='text.txt')
! 2. Get number of lines
do while (IERR == 0)
NUM_LINES = NUM_LINES + 1
read(FID,*,iostat=IERR) CTMP
end do
NUM_LINES = NUM_LINES - 1
write(*,'(A,I0)') "Number of lines = ", NUM_LINES
! 3. Allocate array of strings
allocate(MY_ARRAY(NUM_LINES))
! 4. Read the file content
rewind(FID)
do I = 1, NUM_LINES
read(FID,'(A)') MY_ARRAY(I)
end do
! 5. Print array to standard output
do I = 1,size(MY_ARRAY,1)
write(*,*) trim(MY_ARRAY(I))
end do
deallocate(MY_ARRAY)
close(FID)
end program readText
Вывод выглядит следующим образом:
Number of lines = 6
1. ABC
2. XYZ
3. FOO
4. BAR
5. BYE
6. CKE
Надеюсь, это поможет.