LRDPRDX
LRDPRDX

Reputation: 683

How to print in a single row in a loop?

Suppose I have a Fortran program which includes the following loop:

do i=1, 10
  print *, i
enddo

The output of this will be like

1
2
...
10

How can I write these values to a single line, like in the following?

1 2 ... 10

Upvotes: 4

Views: 3255

Answers (1)

Ian Bush
Ian Bush

Reputation: 7434

There are a number of ways, two that come to mind immediately are shown in the following little program

$ cat loop.f90
Program loop
  Implicit None
  Integer :: i
  Write( *, * ) 'First way - non-advancing I/O'
  Do i = 1, 10
     Write( *, '( i0, 1x )', Advance = 'No' ) i
  End Do
  Write( *, * ) ! Finish record
  Write( *, * ) 'Second way - implied do loop'
  Write( *, * ) ( i, i = 1, 10 )
End Program loop
$ gfortran -std=f2003 -Wall -Wextra -fcheck=all loop.f90 
$ ./a.out
 First way - non-advancing I/O
1 2 3 4 5 6 7 8 9 10 
 Second way - implied do loop
           1           2           3           4           5           6           7           8           9          10
$ 

The first method. non-advancing I/O, suppresses the end of record marker being written, which is normally a new line, but does require an explicit format. The second, implied do loop, doesn't require a format, but is less flexible.

BTW in English they are normally called "loops"

Upvotes: 5

Related Questions