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(kind=c_char) :: cline(257)
116 character(len=256) :: line
117 character(len=5) :: advance_
120 if (
present(advance)) advance_ = advance
127 if (.not. c_associated(s))
exit
128 if (
present(pre))
then
129 write(iunit,
'(a,a)', advance=advance_) pre, trim(line)
131 write(iunit,
'(a)', advance=advance_) trim(line)
139 character(len=*),
intent(inout) :: str
143 if (len(str) == 0)
return
146 if (j < len(str))
then
147 str(j+1:j+1) = achar(0)
150 str(len(str):len(str)) = achar(0)
162 character(len=*),
intent(in) :: f_string
163 character(kind=c_char,len=1),
allocatable :: c_string(:)
167 strlen = len_trim(f_string)
171 c_string(i) = f_string(i:i)
173 c_string(strlen+1) = c_null_char
181 character(kind=c_char,len=1),
intent(in) :: c_string(*)
182 character(len=*),
intent(out) :: f_string
188 do while (i <= len(f_string))
189 if (c_string(i) == c_null_char)
exit
190 f_string(i:i) = c_string(i)
198 type(c_ptr),
intent(in) :: c_string
199 character(len=*),
intent(out) :: f_string
201 character(len=1, kind=c_char),
pointer :: p_chars(:)
204 if (.not. c_associated(c_string))
then
207 call c_f_pointer(c_string, p_chars, [len(f_string)+1])
210 do while (i <= len(f_string))
211 if (p_chars(i) == c_null_char)
exit
212 f_string(i:i) = p_chars(i)
223 integer pure function
c_str_len(fortran_char)
224 character(len=*),
intent(in) :: fortran_char
System information (time, memory, sysname)
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 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.