forums.silverfrost.com
Welcome to the Silverfrost forums

Author Message
Zach

Joined: 13 Mar 2023
Posts: 85
Location: Groningen, Netherlands

 Posted: Mon May 15, 2023 11:19 am    Post subject: Converting string into array of characters How can I 1. convert a string into array of characters? 1. convert an array of characters into a string? Patrick.
Kenneth_Smith

Joined: 18 May 2012
Posts: 697
Location: Hamilton, Lanarkshire, Scotland.

Posted: Mon May 15, 2023 12:11 pm    Post subject:

 Code: implicit none integer i, n character(len=26) :: a2z, z2a character(len=1)  :: ch(26) n   = 26 a2z = '' print'(A)', a2z do i = 97, 97+n, 1   a2z = trim(a2z)//char(i) end do print'(A)', a2z    ! Initial string do i = 1, n   ch(i) = a2z(i:i) ! Character array end do z2a = '' print'(A)', z2a do i = n, 1, -1    !Reverse order   z2a = trim(z2a)//ch(i) end do print'(A)', z2a   ! New string formed from character array end

 Code: abcdefghijklmnopqrstuvwxyz zyxwvutsrqponmlkjihgfedcba
Kenneth_Smith

Joined: 18 May 2012
Posts: 697
Location: Hamilton, Lanarkshire, Scotland.

Posted: Mon May 15, 2023 5:20 pm    Post subject:

Expanding to use subroutines "String2array" and "Array2string":

 Code: implicit none integer i, n character(len=128) :: a2z, a2zcopy character(len=1), allocatable  :: array(:) interface   subroutine string2array(str,array)     character(len=*), intent(in) :: str     character(len=1), allocatable, intent(out) :: array(:)   end subroutine string2array   subroutine array2string(array,str)     character(len=1), allocatable, intent(in) :: array(:)     character(len=*), intent(out) :: str   end subroutine   end interface n   = 26 a2z = '' print'(A)', trim(a2z) do i = 97,97+n-1   a2z = trim(a2z)//char(i) end do print'(25A,5X,A)', 'Initial string:          ',trim(a2z) call string2array(a2z,array) a2zcopy = '' print'(A)', trim(a2zcopy) call array2string(array,a2zcopy) print'(25A,5X,A)', 'String from char array:  ',trim(a2zcopy) end   subroutine string2array(str,array)   character(len=*), intent(in) :: str   character(len=1), allocatable, intent(out) :: array(:)   integer i, n   if (allocated(array)) deallocate(array)     n = len_trim(str)     allocate(array(n))     forall (i=1:n) array(i) = str(i:i)   end subroutine string2array   subroutine array2string(array,str)   character(len=1), allocatable, intent(in) :: array(:)   character(len=*), intent(out) :: str   integer i, n   if (.not. allocated(array)) STOP 'Error'     str = ''     do i = 1, size(array), 1       str = trim(str)//array(i)     end do   end subroutine array2string
Zach

Joined: 13 Mar 2023
Posts: 85
Location: Groningen, Netherlands

 Posted: Tue May 16, 2023 10:54 am    Post subject: Thank you very much for the code with which you responded to my query! Patrick.
 Display posts from previous: All Posts1 Day7 Days2 Weeks1 Month3 Months6 Months1 Year Oldest FirstNewest First
 All times are GMT + 1 Hour Page 1 of 1

 Jump to: Select a forum Admin----------------Announcements FTN95----------------GeneralKBaseSupportSuggestionsClearWin+Plato64-bit FTN77----------------Support
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum

Powered by phpBB © 2001, 2005 phpBB Group