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