47 character(len=*),
intent(inout) :: str
53 if (str(i:i) /=
' ')
then
68 character(len=*),
intent(inout) :: str
70 character(len=len(str)) :: tmp_str
72 if (index(str,
'/', .
true.) /= len_trim(str))
then
74 write(str,
'(a,a1)') trim(tmp_str),
'/'
82 character (len=*),
intent(inout) :: str
87 if (str(i:i) /=
' ')
exit
103 character(len=80) function str_center(s_in, l_in)
result(s_out)
104 character(len=*),
intent(in) :: s_in
105 integer,
intent(in) :: l_in
107 integer :: pad, i, li, l
112 s_out(1:l) = s_in(1:l)
122 s_out(pad + 1:pad + li) = s_in(1:li)
123 do i = pad + li + 1, l
132 integer,
intent(in) :: iunit
133 type(c_ptr),
intent(in) :: str
134 character(len=*),
optional,
intent(in) :: pre
135 character(len=*),
optional,
intent(in) :: advance
138 character(kind=c_char) :: cline(257)
139 character(len=256) :: line
140 character(len=5) :: advance_
143 if (
present(advance)) advance_ = advance
150 if (.not. c_associated(s))
exit
151 if (
present(pre))
then
152 write(iunit,
'(a,a)', advance=advance_) pre, trim(line)
154 write(iunit,
'(a)', advance=advance_) trim(line)
162 character(len=*),
intent(out) :: str
167 str(j+1:j+1) = achar(0)
178 character(len=*),
intent(in) :: f_string
179 character(kind=c_char,len=1),
allocatable :: c_string(:)
183 strlen = len_trim(f_string)
187 c_string(i) = f_string(i:i)
189 c_string(strlen+1) = c_null_char
197 character(kind=c_char,len=1),
intent(in) :: c_string(*)
198 character(len=*),
intent(out) :: f_string
203 do while(c_string(i) /= c_null_char .and. i <= len(f_string))
204 f_string(i:i) = c_string(i)
207 if (i < len(f_string)) f_string(i:) =
' '
213 type(c_ptr),
intent(in) :: c_string
214 character(len=*),
intent(out) :: f_string
216 character(len=1, kind=c_char),
pointer :: p_chars(:)
219 if (.not. c_associated(c_string))
then
222 call c_f_pointer(c_string, p_chars, [huge(0)])
224 do while(p_chars(i) /= c_null_char .and. i <= len(f_string))
225 f_string(i:i) = p_chars(i)
228 if (i < len(f_string)) f_string(i:) =
' '
237 integer pure function
c_str_len(fortran_char)
238 character(len=*),
intent(in) :: fortran_char
character(kind=c_char, len=1) function, dimension(len_trim(f_string)+1), private string_f_to_c(f_string)
convert a Fortran string to a C string
subroutine string_c_to_f(c_string, f_string)
convert a C string to a Fortran string
subroutine, public string_c_ptr_to_f(c_string, f_string)
subroutine, public str_trim(str)
removes leading spaces from string
subroutine, public conv_to_c_string(str)
converts to c string
subroutine, public compact(str)
Removes all spaces from a string.
subroutine, public print_c_string(iunit, str, pre, advance)
prints the C string given by the pointer str
integer pure function, public c_str_len(fortran_char)
Convert fortran character length to C character length.
character(len=80) function, public str_center(s_in, l_in)
puts space around string, so that it is centered
subroutine, public add_last_slash(str)
Adds a '/' in the end of the string, only if it missing. Useful for directories.