Bonjour à tous,
J'ai besoin d'une routine qui écrit un nombre (mettons un entier) de longueur variable d'un appel de la routine à l'autre en supprimant les espaces de début.
J'ai expérimenté deux solutions "maison" qui marchent très bien mais si quelqu'un a une idée qui ressemble moins à de la dibouille, je suis preneuse !! Et si non (sniff !), laquelle me conseilleriez-vous ? J'ai opté pour la seconde plus facilement adaptable à d'autres types de nombre.
Solution 1 :
Solution 2 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 Integer :: val !entier*4 Integer :: i Character(len=6) :: fmt Do i = 1, 10 If ((i==10).or.(abs(val) < 10**i)) Then If (val<0) then write(fmt,'(A,I2,A)') '(I',i+1,')' write(*,fmt) val Else If (val>=0) then write(fmt,'(A,I2,A)') '(I',i,')' write(*,fmt) val End If Exit End If End Do
Merci à tous !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 Integer :: val !entier*4 Integer :: i = 1 Character(len=12) :: charVal write(charVal,'(I)') val i = verify(charVal,' ') write(*,'(A)') charVal(i:len_trim(charVal))
Mathlus.
Partager