0

嗨,所有 Fortran 爱好者,

我正在尝试写入一个输出三个变量的文件

      program main

      integer N, u
      parameter(u=20)

      open (u, FILE='points.dat', STATUS='new')
      do 10 i= 1, 100 
          write(u,100) i, i*2, i*5
 10   continue 
 100  format (I5, I10, 9X, I10)
      close(u)

      print *,'COMPLETE!!'
      end

提供输出(points.dat 剥离文件内容):

       1         2                  5
       2         4                 10
       3         6                 15
       4         8                 20
       5        10                 25
       6        12                 30
       7        14                 35
       8        16                 40
       9        18                 45
      10        20                 50
      11        22                 55
       12        24                 60
      ...
      ...
      ...
      ...
      ...
      99       198                495
     100       200                500
   |(This line added by the write statement)

但我想要这样的东西:

1         2                  5
2         4                 10
3         6                 15
4         8                 20
5        10                 25
6        12                 30
7        14                 35
8        16                 40
9        18                 45
10       20                 50
11       22                 55
12       24                 60
  ...
  ...
  ...
  ...
  ...
  99       198                495
 100       200                500|(The cursor stop here)

即每行开头没有空格。最后一行在打印 '500' 后停止

我尝试使用 '1X' 说明符使用水平间距,但没有成功。

4

1 回答 1

0

在 write 语句中添加 Advance='no'。如果该行不是最后一行,则写 EOL:

      do 10 i= 1, 100 
          write(u,100,advance='no') i, i*2, i*5
          if (i.ne.100) write(u,*)
10   continue 

编辑:我现在看到了,看来 fortran 程序无论如何都会将 EOL 添加到文件末尾。然后你必须使用外部程序来截断你的文件,例如参见https://www.quora.com/How-do-I-chop-off-just-the-last-byte-of-a-file-in -重击

于 2016-12-10T12:22:54.447 回答