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 :

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
Solution 2 :

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))
Merci à tous !

Mathlus.