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
Liens | Site |
---|---|
TRIM — Remove trailing blank characters of a string | gcc doc |
LEN — Length of a character entity | gcc doc |
CHARACTER Operator and Substrings | cs.mtu |