写入文件,在行首和无空行结束时没有前导空格

时间:2016-12-10 11:33:28

标签: g77

所有Fortran Lovers,

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

的文件
      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'说明符使用水平间距,但没有成功。

1 个答案:

答案 0 :(得分:0)

添加提前='否'在写声明中。如果该行不是最后一行,请写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-Bash