我正在尝试用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列应完全相同。
你知道发生了什么吗?
答案 0 :(得分:4)
D'哦~~
答案显而易见。您的格式声明
431 Format(3A12,f12.8,f12.8,f12.8)
提供3个12个字符的字段,后跟3个f-p字段,但是你的写声明
write(777,431)cbname(i),rvar(15,i),rvar(14,i),rvar(15,i)
仅提供1个字符变量,然后提供3个f-p变量。前两个是在A12
编辑描述符下编写的,当然它们看起来像垃圾。将声明431更改为
431 Format(A12,f12.8,f12.8,f12.8)
看看会发生什么