Это было в моем .htaccess
DirectoryIndex index.html index.htm
index.html, содержащем PHP-код. По умолчанию PHP не будет обрабатывать файлы с такими расширениями, как htm *, как PHP-код.
Вы можете переопределить это, добавив следующее в .htaccess:
<FilesMatch ".+\.html$">
SetHandler application/x-httpd-php
</FilesMatch>
Один метод: прочитайте строку в строке, используя строку, которая по крайней мере длиннее самой длинной ожидаемой строки. Затем вы начинаете разбирать строку. Например, если числа всегда разделяются пробелами, используйте это для определения границ подстроки. Затем вы можете использовать «внутренние чтения» для чтения из каждой подстроки для получения числовых значений. Внутреннее чтение использует строку вместо номера единицы и получает данные из строки - по крайней мере, вам не нужно воссоздавать преобразование символов в числовые значения, инструкция чтения сделает это за вас. Внутренние функции, предоставляемые Fortran, облегчат анализ.
Предполагая, что вы в порядке с заполнением массива нулями (в частности, ссылаясь на более поздний дублированный вопрос здесь ), это моя идея:
Прочитать строку данных на строка в строку, затем добавьте несколько нулей, наконец, прочитайте каждую строку данных из этого массива. Вот пример:
program unknown_numbers
implicit none
integer, parameter :: nrow=3, ncol=14
integer :: data(ncol, nrow)
character(len=2*ncol) :: zeros ! will contain lots of zeros
character(len=10*ncol) :: line ! temporary storage for each line of the file
integer :: i, u
! Write " 0 0 0 0 0 0 0 0" into the string "zeros"
write(zeros, '(*(I2))') [(0, i=1, ncol)]
open(newunit=u, file='data.txt', status='old', action='read')
do i = 1, nrow, 1
! Read the next line into a temporary string array
read(u, '(A)') line
! Append a number of zeros to the temporary string
line = trim(line) // zeros
! Read the row of data from the string.
read(line, *) data(:, i)
end do
close(u)
! For testing purposes, print the data.
print '(14(X, I3))', data
end program unknown_numbers
integer,parameter :: reclen=99999 ! maximum record length
integer,parameter :: undef=-9999 ! undefined value
integer :: actual_reclen ! actual record length
integer,dimension(reclen) :: dummy=undef ! dummy array used for reading
integer,dimension(:),allocatable :: a ! final array
open(unit=10,file='sample.txt',form='formatted',access='sequential')
read(unit=10,fmt=*,end=101)(dummy(i),i=1,reclen)
101 close(unit=10)
actual_reclen=COUNT(dummy/=undef)
allocate(a(actual_reclen))
a=dummy(1:actual_reclen)
end
Это программа, которая может подсчитывать числа в строке (или количестве столбцов), но для строки. Если у вас много строк, вы должны немного изменить его.
program test12
implicit none
integer n,m,i
integer,allocatable::x(:)
open(10,file='C:\Users\user\Desktop\file.txt')
allocate(x(n))
20 n=n+1
deallocate(x)
allocate(x(n))
read(10,*,iostat=m)(x(i),i=1,n)
if (m==-1)then
goto 30
else
rewind 10
goto 20
end if
30 print*,n-1
end