0

我正在尝试用 fortran 写出一个格式化列表。基本上它很简单,它编译,但只给出垃圾。

我的代码:

     SUBROUTINE f_m ()
#ifdef _IMPLICITNONE
      implicit none
#else
      implicit logical (a-z)
#endif
c     ** Start of generated type statements **
      INCLUDE 'var'
      integer :: i
c     ** End of generated type statements **

      open(777,file='force.bla',Access='Append',status='unknown')
c     rewind(777)        
      do i=1,3
         write(777,431)cbname(i),rvar(15,i),rvar(14,i),rvar(15,i)
      end do
      write(777,*)"#############################"
      close(777)
430   Format(3A18)   
431   Format(3A12,f12.8,f12.8,f12.8)
      return
      end subroutine f_m

cbname是一个角色,而且是rvar真实的,都在'var'. 子程序在 FEM 仿真期间和每个步骤结束时被调用。

主要问题是,输出如下所示:

[...我现在不允许发布图片,所以:]

字符写入正确,据我了解,接下来的两列是随机 ascii 或只是一些噪音,第四列又可以了。打开文件时会出现一条错误消息,声称它不是 utf8 格式。甚至有些线条被切成两半,所以我只能看到上面的部分。

真正奇怪的是:第 2 列和第 4 列应该完全相同。

你知道发生了什么吗?

4

1 回答 1

4

噢噢噢

现在答案很明显了。你的格式声明

431   Format(3A12,f12.8,f12.8,f12.8)

提供 3 个 12 个字符的字段,后跟 3 个 fp 字段,但您的 write 语句

     write(777,431)cbname(i),rvar(15,i),rvar(14,i),rvar(15,i)

仅提供 1 个字符变量,然后提供 3 个 fp 变量。其中前两个是在A12编辑描述符下编写的,当然它们看起来像垃圾。将语句 431 更改为

431   Format(A12,f12.8,f12.8,f12.8)

看看会发生什么

于 2013-07-02T09:56:01.613 回答