Я читаю файл в строку символов следующим образом:
character*50, intent(in) :: flname
character(len=:), allocatable :: str
integer size
inquire(file=flname, size=size)
allocate(character(len=size)::str)
open(1, file=flname, status='OLD', access='STREAM')
read(1) str
close(1)
Я пытаюсь перебрать строку символов и обнаружить определенные символы, в том числе такие, как символы новой строки ('\n') или табуляции ('\t'). Но по какой-то причине я не могу обнаружить эти символы в файле. Игнорирует ли Fortran эти символы автоматически, и если да, то как я могу заставить его обнаруживать их?
Вы утверждаете, что не можете обнаружить символы, но не показываете, как вы пытаетесь их обнаружить.
Попытка в кросспосте fortran-lang.discourse.group/t/… Советую сразу не делать кросспост. Многие люди посещают оба этих сайта. Вы можете подождать час или два и, если нет ответов, сделать кросс-пост. Это просто пустая трата времени людей, пытающихся помочь, когда у вас уже есть решение на другом сайте.
Вы должны иметь возможность напрямую сравнивать с ранее указанными символами, например. NL, CR, HT в коде ниже.
program test
integer i
character, parameter :: NL = new_line( 'A' ) ! new line
character, parameter :: CR = achar( 13 ) ! carriage return
character, parameter :: HT = achar( 9 ) ! horizontal tab
character(len=50) :: flname = "test.f90"
character(len=:), allocatable :: str
integer size
inquire(file=flname, size=size)
allocate(character(len=size)::str)
open( 1, file=flname, status='OLD', access='STREAM' )
read(1) str
close(1)
do i = 1, size
select case( str(i:i) )
case( NL ); write(*,*) "New line"
case( CR ); write(*,*) "Carriage return"
case( HT ); write(*,*) "Horizontal tab"
case default; write(*,*) "Letter [", str(i:i), "]"
end select
end do
end program test
Пожалуйста, покажите свою петлю и усилия по обнаружению, чтобы мы могли отладить.