IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

FAQ Fortran

FAQ FortranConsultez toutes les FAQ

Nombre d'auteurs : 1, nombre de questions : 70, dernière mise à jour : 23 juillet 2021 

 
OuvrirSommaireLes chaînes de caractères

Une chaîne de caractères se note entre guillemets simples ou doubles. On affecte une valeur à une chaîne de caractères avec le signe = comme pour les autres types de variables.

Exemple de chaîne de caractères
Sélectionnez
 character(len=20)::chaine

 chaine = "une chaine de caractère"

Une chaîne de caractères a une certaine longueur, donnée lors de sa déclaration (le paramètre len). Elle ne peut pas contenir plus de caractères que le nombre indiqué lors de sa déclaration. Si la chaîne de caractères que l'on veut enregistrer dans une variable est plus longue que la longueur de la variable, seuls les premiers caractères sont enregistrés. Si la chaîne de caractères que l'on veut enregistrer dans une variable est plus courte que la longueur de la variable les caractères manquants sont complétés par des espaces (peut dépendre du compilateur).

Exemples
Sélectionnez
 character(len=4)::courte
 character(len=20)::longue

 courte = "bonjour"
 ! la variable courte ne contient que "bonj"

 longue = "bonjour"
 ! la variable longue contient "bonjour             "
Créé le 22 octobre 2008  par Germain Salvato-Vallverdu

On utilise la fonction len qui renvoie un entier dont la valeur est la longueur de la chaine.

Utilisation de len
Sélectionnez
 character(len=100)::mot
 integer::long

 ! longueur de mot
 long = len(mot)

 mot = "bonjour"
 ! dans mot on a mis la chaine de caractères "bonjour" pour connaitre la longueur
 ! de cette chaine on doit en premier supprimer les blancs en bout de chaine
 ! on utilise trim
 long = len( trim( mot ) )
 ! dans ce cas long = 7 qui est la taille de bonjour
Créé le 22 octobre 2008  par Germain Salvato-Vallverdu

La fonction index(chaine1,chaine2) renvoit un entier dont la valeur est égale à la position du premier caractère de chaine2 dans chaine1. Si chaine2 n'est pas présente dans chaine1 elle renvoit 0.

Cette fonction peut être très utile par exemple pour repérer une ligne dans un fichier où est inscrit un repère.

Exemple d'utilisation de index
Sélectionnez
 ...
 character(len=100)::ligne
 integer::k

 ! ouverture du fichier
 open(10,file="resultats",action="read")
 
 ! recherche du repère
 Do
    ligne = ""
    read(10,"(a)")ligne 
    k = index( ligne , "repere" )
    ! si k n'est pas 0 c'est que ligne contient "repere"
    If( k /= 0 ) exit
 Enddo
      
 ! lecture des informations souhaitées sur ligne ou sur la suite du fichier
 ...
Créé le 22 octobre 2008  par Germain Salvato-Vallverdu

Les commandes read et write permettent de lire ou écrire dans une chaîne de caractères. Il suffit d'inscrire le nom de la chaîne de caractères dans source de lecture ou la destination d'écriture.

Exemple de lecture ou écriture dans une chaîne de caractère
Sélectionnez
 ! écriture dans num
 integer::k
 character(len=4)::num
      
 k=1234
 write(num,"(i4)")k

 ! * * * * * * * * *

 ! lecture dans ligne
 character(len=100)::ligne
 character(len=4)::var
      
 ! ligne contient " x = 3 " 
 read(ligne,*)var,entier

L'écriture dans une variable chaîne de caractères par rapport à une simple affectation présente l'intérêt que l'on peut choisir le format dans lequel on écrit.

Créé le 22 octobre 2008  par Germain Salvato-Vallverdu

On utilise la fonction trim qui renvoie une chaîne de caractères dans laquelle les espaces à la fin de la chaîne ont été supprimés.

Exemple d'utilisation de la fonction trim
Sélectionnez
 character(len=10)::chaine

 chaine = "bonjour"

 write(*,*)chaine,"XX"
 ! résultats :bonjour   XX      

 write(*,*)trim(chaine),"XX"
 ! résultats :bonjourXX

Attention, Fortran complète automatiquement les chaînes de caractères par des espaces, donc si on remplace le contenu d'une variable chaîne de caractères par son contenu en ayant supprimé les espaces ils sont rajoutés automatiquement pour compléter la longueur de la variable chaîne de caractères.

Attention à la longueur des chaînes
Sélectionnez
 ! on reprend l'exemple précédent
 character(len=10)::chaine 
 character(len=7)::courte

 chaine = "bonjour"
 ! chaine contient "bonjour   "

 chaine = trim(chaine)
 ! comme les caractères manquants sont complétés par des espaces 
 ! chaine contient toujours "bonjour   "

 courte = trim(chaine)
 ! courte contient "bonjour"

La fonction trim est très utile pour écrire des noms de fichier dans une variable chaîne de caractères car elle permet d'avoir des noms de fichiers sans espaces.

Créé le 22 octobre 2008  par Germain Salvato-Vallverdu

Copyright © 2008 developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.