bonjour,
je souhaite écrire une chaine de caracteres au clavier, puis
en connaitre sa longueur avec la fonction len et enfin, une fois que je connais la longueur, je voudrais découper la chaine de caracteres un à un.
comment puis-je faire?
merci
bonjour,
je souhaite écrire une chaine de caracteres au clavier, puis
en connaitre sa longueur avec la fonction len et enfin, une fois que je connais la longueur, je voudrais découper la chaine de caracteres un à un.
comment puis-je faire?
merci
Il est important de comprendre qu'en Fortran, il n'est généralement pas possible de connaitre la longueur d'une chaîne de caractère. Quand on assigne une chaîne à une variable, la chaîne est tronquée ou complétée par des espaces de façon à occuper exactement la longueur déclarée de la variable.
Les fonctions de manipulation intéressantes pour ta question sont :
- len(Var) te donnera la longueur physique de la variable et non la longueur du contenu.
- len_trim(Var) te donnera la longueur du contenu, excluant les espaces à la fin.
Par exemple :
Si la chaîne en entrée contenait des espaces à la fin, il est donc difficile de le savoir. Il est cependant possible, en Fortran 95, de lire un caractère à la fois avec la clause « advance="no" » dans le read.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 character (80) Var Var = '1234567890 ' ! 13 carctères, mais Var contient 10 digits suivi de 70 espaces. print *, len(Var) ! affichera 80 print *, len_trim(Var) ! affichera 10
Pour obtenir une sous-chaîne, la syntaxe est Var(Début:Fin). Pour avoir un caractère à la fois, il faut donc faire Var(Pos: Pos).
Grace à tes conseils j'arrive à determiner la longueur de la chaine de caractères. Mais, comment puis-je faire pour avoir acces à chacun de ces caracteres?
Je prend un petit exemple:
si la chaine de caractere est : hello
comment puis-je faire pour que : lettre(1)=h ; lettre(2)=e ; lettre(3)=l ; ...?
merci
salut,
Code : Sélectionner tout - Visualiser dans une fenêtre à part lettre(1:1)='h' ; lettre(2:2)='e' ; lettre(3:3)='l' ; ...
salut,
merci pour ta réponse.
Mais, je me suis mal exprimé.
j'ai une chaine de caractères aléatoire dont je connais la longueur.
Comment puis-je faire pour connaitre la 1ere, 2nde, 3eme,... lettre de cette chaine?
et ensuite je voudrais, si le mot est "hello", qu'il me renvoit "h" pour lettre(1) ; "e" pour la seconde valeur du tableau lettre(i), et ainsi de suite.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 character*5 mot integer lettre(5) ! tableau contenant les cinq lettres du mot write(*,*)'entrer mot de 5 caratères' read(*,*)mot
Mes cours de fortran sont loint et je rame un peu.
Merci
Partager