Home > Blockchain >  read file character by character fortran
read file character by character fortran

Time:07-08

I'm using GNU fortran. I'd like to be able to read a file into a string, and then iterate over every character in that file OR simply read the file character by character. Here's what I tried:

character(len=:) , allocatable :: content
! this would normally allocate to the file size, but I'm making a minimal example
allocate(character(256) :: content) 
open(unit=2, file='test.txt', status='old')
read(2, *) content
close(2)
print *, content

But this only prints the first line and I'm not really sure why.

CodePudding user response:

If you name this code 'a.f90' and compile it will print itself.

program foo
   character(len=:), allocatable :: str
   integer fd
   allocate(character(len=216) :: str)
   open(newunit=fd, file='a.f90', access='stream')
   read(fd) str
   close(fd)
   print *, str
end program foo

BTW, to make this more useful, you can use inquire(file='a.f90', size=sz) to determine the file size, and then do the allocation with allocate(character(len=sz-1) :: str). The minus 1 removes EOF.

  • Related