46 character(len=*),
intent(inout) :: str
52 if (str(i:i) /=
' ')
then
67 character(len=*),
intent(inout) :: str
69 character(len=len(str)) :: tmp_str
71 if (index(str,
'/', .
true.) /= len_trim(str))
then
73 write(str,
'(a,a1)') trim(tmp_str),
'/'
80 character(len=80) function str_center(s_in, l_in)
result(s_out)
81 character(len=*),
intent(in) :: s_in
82 integer,
intent(in) :: l_in
84 integer :: pad, i, li, l
89 s_out(1:l) = s_in(1:l)
99 s_out(pad + 1:pad + li) = s_in(1:li)
100 do i = pad + li + 1, l
109 integer,
intent(in) :: iunit
110 type(c_ptr),
intent(in) :: str
111 character(len=*),
optional,
intent(in) :: pre
112 character(len=*),
optional,
intent(in) :: advance
115 character(len=256) :: line
116 character(len=5) :: advance_
119 if (
present(advance)) advance_ = advance
124 if (.not. c_associated(s))
exit
125 if (
present(pre))
then
126 write(iunit,
'(a,a)', advance=advance_) pre, trim(line)
128 write(iunit,
'(a)', advance=advance_) trim(line)
136 character(len=*),
intent(inout) :: str
140 if (len(str) == 0)
return
143 if (j < len(str))
then
144 str(j+1:j+1) = achar(0)
147 str(len(str):len(str)) = achar(0)
159 character(len=*),
intent(in) :: f_string
160 character(kind=c_char,len=1) :: c_string(
c_str_len(f_string))
164 strlen = len_trim(f_string)
167 c_string(i) = f_string(i:i)
169 c_string(strlen+1) = c_null_char
177 character(kind=c_char,len=1),
intent(in) :: c_string(*)
178 character(len=*),
intent(out) :: f_string
184 do while (i <= len(f_string))
185 if (c_string(i) == c_null_char)
exit
186 f_string(i:i) = c_string(i)
194 type(c_ptr),
intent(in) :: c_string
195 character(len=*),
intent(out) :: f_string
197 character(len=1, kind=c_char),
pointer :: p_chars(:)
200 if (.not. c_associated(c_string))
then
203 call c_f_pointer(c_string, p_chars, [len(f_string)+1])
206 do while (i <= len(f_string))
207 if (p_chars(i) == c_null_char)
exit
208 f_string(i:i) = p_chars(i)
219 integer pure function
c_str_len(fortran_char)
220 character(len=*),
intent(in) :: fortran_char
subroutine, public 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 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
character(kind=c_char, len=1) function, dimension(c_str_len(f_string)), public string_f_to_c(f_string)
convert a Fortran string to a C string
subroutine, public add_last_slash(str)
Adds a '/' in the end of the string, only if it missing. Useful for directories.