Silverfrost Forums

Welcome to our forums

Student exercise

15 Aug 2013 9:02 #12845

It would be nice if we had a Fortran function in the library that takes a character variable and translates C escape characters (\n, \r, \t etc.).

If you are a Fortran teacher, this might be a useful exercise for your students.

Here is a possible solution. Can it be improved?

function esc(str)
character(*) esc,str
character ce,cs
integer le,ls,ne,ns
le = len(esc)
ls = len(str)
ne = 1
ns = 1
do while(.TRUE.)
 cs = str(ns:ns) 
 select case(cs)
   case('\\')
     ns = ns + 1
     cs = str(ns:ns)
     select case(cs)
       case('\\')
         ce = cs
       case('n')
         ce = char(10)
       case('r')
         ce = char(13)
       case('t')
         ce = char(9)
       case default
         esc(ne:ne) = '\\'
         ne = ne + 1
         ce = cs
     end select
   case default
     ce = cs
 end select
 esc(ne:ne) = ce
 ne = ne + 1
 ns = ns + 1
 if(ns > ls .OR. ne > le) exit  
end do
if(ne <= le) esc(ne:) = ' '
end

program test
character(len=256),external::esc
print*, trim(esc('Testing\\tTesting'))
end
Please login to reply.