IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
logo
Sommaire > Les chaînes de caractères
        Comment affecter une valeur à une chaîne de caractères ?
        Comment trouver la longueur d'une chaine de caractères ?
        Comment repérer une sous-chaine dans une chaine ?
        Comment lire et écrire dans une chaine ?
        Comment supprimer les espaces à la fin d'une chaîne de caractères ?



Comment affecter une valeur à une chaîne de caractères ?
auteur : Germain Salvato-Vallverdu
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
 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 caracè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
 character(len=4)::courte
 character(len=20)::longue

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

 longue = "bonjour"
 ! la variable longue contient "bonjour             "

Comment trouver la longueur d'une chaine de caractères ?
auteur : Germain Salvato-Vallverdu
On utilise la fonction len qui renvoie un entier dont la valeur est la longueur de la chaine.
Utilisation de len
 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

Comment repérer une sous-chaine dans une chaine ?
auteur : 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
 ...
 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
 ...

Comment lire et écrire dans une chaine ?
auteur : 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
 ! é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.


Comment supprimer les espaces à la fin d'une chaîne de caractères ?
auteur : Germain Salvato-Vallverdu
On utilise la fonction trim qui renvoie une chaîne de caractères dans laquelle 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
 character(len=10)::chaine

 chaine = "bonjour"

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

 write(*,*)trim(chaine),"XX"
 ! résultats :bonjourXX
Attention, Fortran complète les automatiquement les chaînes de caractères par des espaces, donc si on remplace le contenu d'une variable chaîne de caractère 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
 ! 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.



Consultez les autres F.A.Q's


Valid XHTML 1.0 TransitionalValid CSS!

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.