PaulLaidler Site Admin
Joined: 21 Feb 2005 Posts: 8210 Location: Salford, UK
|
Posted: Thu Aug 15, 2013 10:02 am Post subject: Student exercise |
|
|
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?
Code: | 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 |
|
|