Concaténer deux strings en fortran ?

Published: 20 octobre 2014

DMCA.com Protection Status

En fortran, il est possible de concaténer deux strings, supposons que nous ayons 2 strings (string1, string2) de longueur 20 et que l'on souhaite additionner ces deux strings ensemble pour former un nouveau string (string3). Dans ce cas il suffit d'utiliser l'opérateur // pour additionner les deux strings (voir exemple 1 ci-dessous). Néanmoins, si le string 1 contient principalement des espaces en fin vous allez obtenir (voir exemple 1) un strings 3 avec le même nombres d'espaces entre le string 1 et 2, pour remédier à cela il suffit de rogner (trim() en anglais) le string 1 pour supprimer les espaces et diviser (split en anglais comme ceci: string1(1:len( trim(string1) )) (voir exemple 2). Finalement pour ajouter un simple espace entre les deux strings il suffit de faire comme dans l'exemple 3:

program ConcatenateTwoStringsFortran

implicit none

integer :: i,j

character*20 :: string1, string2
character*40 :: string3

string1 = 'Hello'
string2 = 'World !'

!write(6,*) string1, string2

!string3 = string1 + string2

string3 = string1//string2

write(6,*) 'Exemple 1: ',string3

string3 = string1(1:len( trim(string1) ))//string2

write(6,*) 'Exemple 2: ',string3

string3 = string1(1:len( trim(string1) ))//' '//string2

write(6,*) 'Exemple 3: ', string3

end program ConcatenateTwoStringsFortran

qui donne:

 Exemple 1: Hello               World !             
 Exemple 2: HelloWorld !                            
 Exemple 3: Hello World !

Note: ne pas utiliser l'opérateur '+' pour additionner deux strings au risque d'avoir le message d'erreur suivant:

string3 = string1 + string2
      1
Error: Operands of binary numeric operator '+' at (1) are CHARACTER(1)/CHARACTER(1)

Recherches associées