fortran 77 代码write问题
fortran77代码write(nprep,82)irepnwrite(npnlm,83)nlm82format(i4.4)83format(i4.4)write后括号...
fortran 77 代码
write (nprep,82) irepn
write (npnlm,83) nlm
82 format (i4.4)
83 format (i4.4)
write后括号里面,第一个位置不是数字,不是星号,是字母,这是什么鬼?书上没找到哪里有这种写法的解释。 展开
write (nprep,82) irepn
write (npnlm,83) nlm
82 format (i4.4)
83 format (i4.4)
write后括号里面,第一个位置不是数字,不是星号,是字母,这是什么鬼?书上没找到哪里有这种写法的解释。 展开
1个回答
展开全部
fortran中的write用法大致如下:write(设备号,格式)。Fortran对这个设备号的要求是要求在设备号上的数据是整型。11是整型,自己定义的整型变量也是整型。
举个栗子:
integer::n
n=11
write(n,*)"hello world!"
的意思就是说再文件号为11的文件中写入“hello world!”这句话。
举个栗子:
integer::n
n=11
write(n,*)"hello world!"
的意思就是说再文件号为11的文件中写入“hello world!”这句话。
追问
这个我也想过了,但是nprep npnlm定义的是字符串啊
character*4 nprep
character*4 npnlm
追答
如果这样的话就涉及到fortran的黑科技了。
一般情况下fortran中的数字变量无法变成字符串的,而fortran又没有函数支持变量类型的转换。这时候就用read跟write这两个函数来转换了。详情请搜索:“fortran字符转数字”,网上这种转换方法的介绍一大堆的。
还是补一个栗子吧:
假设我要打开从1.TXT,2.txt.....999.TXT这样命名的文件夹。最初想到的就是:
do I=1,999
open(11,file=i//".txt")
enddo
这样的语句。但是这样写肯定会报错,因为i是整型,不是字符串,而//前后两端一定要是字符串。但是fortran中没有直接能把整型转成字符串的函数,这时候设一个字符型变量nf,然后用write(nf,'(i3)')i, 把i的值以字i3的格式写入nf,就达到了字符串跟数字的相互转换了。同理还有read。有兴趣的话可以自己看一看
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询