Я не понимаю, «если пользователь вводит менее 80 символов, некоторые специальные символы добавляются в оставшуюся позицию». - способ Фортрана состоит в добавлении пробелов для заполнения строки при вводе-выводе или назначении. Вы можете увидеть это с помощью следующей тестовой программы. Он также включает в себя метод, показанный haraldkl, для замены конечных пробелов на некоторые другие символы. Проблема заключается в том, что трудно различить «настоящие» конечные пробелы и те, которые заполнены.
module subs
contains
subroutine write_string (string)
character (len=10), intent (in) :: string
integer :: i
write (*, '(">", A10, "<")' ) string
do i=1, 10
write (*, *) i, ichar (string (i:i))
end do
return
end subroutine write_string
end module subs
program test_string
use subs
character (len=10) :: string
integer :: i
! Assignment test
string = "abc"
call write_string (string)
! Read test
string = "123456789"
write (*, '("Input string:")' )
read (*, '(A)' ) string
call write_string (string)
! replacing the trailing blanks:
do i=len_trim (string)+1, 10
string(i:i) = "+"
end do
call write_string (string)
stop
end program test_string