首页/文章/ 详情

Fortran基础教程 | 文件操作

1年前浏览682

本次推文主要内容:在Fortran中如何正确使用文件操作?

在代码语言的初步学习阶段,大家在进行数据的输入和输出时。一般都是在键盘键入和屏幕上输出,当处理较大文件时,使用文件操作往往会更方便一点。

Fortran语言中的基础文件操作主要使用了OPENREADWRITE,其他的命令在遇到后可上网自行搜索,本文将围绕提及到的三个语句进行解释,最后基于Abaqus预置的文件通道号进行说明。

【特别注明】:本文使用到的Fortran算例来源于《Fortran程序设计权威指南》——白海波


文件操作基础语法

为了更加直观的了解语法,我们直接上代码,一行一行解析~

代码片

PROGRAM Ex1002
IMPLICIT NONE
    INTEGER::n
    !输入学生数量
    PRINT *,'请输入学生数量:'
    READ *,n
    !调用子程序
    CALL writeData(n)
END
!向文件中写入数据
SUBROUTINE writeData(n)
IMPLICIT NONE
    !变量定义
    INTEGER :: i
    INTEGER::n
    REAL,ALLOCATABLE::math(:),english(:),physics(:),fortran(:)
    CHARACTER(LEN=20),ALLOCATABLE::name(:)
    !文件打开
    OPEN(10,FILE='file1002.txt')
    !为数组分配内存
    ALLOCATE(math(n),english(n),physics(n),fortran(n),name(n))
    
    !向文件中写入数据
    DO i=1,n
        WRITE(*,100),i
        READ*,name(i),math(i),english(i),physics(i),fortran(i)
        WRITE(10,200),name(i),math(i),english(i),physics(i),fortran(i)
    ENDDO
    !关闭文件
    CLOSE(10)
!I/O格式
100 FORMAT('请输入第',I3,'位同学的姓名及数学、英语、&
             物理、Fortran语言的成绩:'
)
200 FORMAT(A10,4F6.2
END SUBROUTINE writeData

代码解读:

  1. 该程序由主程序和子程序组成,将数据写入文件操作编制为一个子程序,在主程序中call一下,使得代码整体上更为简洁易读;

  2. READ *,n该行代码中的*表示通道号,该通道指向屏幕显示,意思是在屏幕上显示读取数据;

  3. OPEN(10,FILE='file1002.txt')该语句中OPEN表示打开一个文件进行读写,10表示文件与设备相连接的通道号,注意到,一个文件对应一个通道号,可以自己任意指定;FILE='file1002.txt'将在该文件路径下生成一个file1002.txt文件;

  4. CLOSE(10)当文件使用完毕后,可使用CLOSE语句断开和设备的连接,释放文件所占用的空间;

  5. READ*,name(i),math(i),english(i),physics(i),fortran(i)WRITE(10,200),name(i),math(i),english(i),physics(i),fortran(i)将屏幕读取的数据写入到文件中;

  6. WRITE(10,200)写到文件号为10号的文件中,并按照行代码为200的格式进行输出;

  7. 200 FORMAT(A10,4F6.2)该行前面的数字表示行代码,供WRITE输出格式使用,FORMAT后跟的格式化语句详细可点击跳转往期推荐

小结:以上解释总结了文件操作的常用语法,初学者掌握至此就可以了,以后再遇到别的情况,二话不说,直接上网搜。


Abaqus文件号约定

再插入一段小插曲,用户在进行子程序开发的过程中,可能会用到文件操作,但是有时候明明按照Fortran语法来的,但还是没有得到自己想要的效果,参考了@寒江雪大佬的推文,给大家一个小方法。

Abaqus作为一个成熟的商业软件,自身默认设置了一些文件通道号,用户在自定义子程序时,若不知道系统默认的文件号,可能会出错,下图是Abaqus官网中给出的默认文件号:

 
 

从上图可以看出,Abaqus隐式分析和显示分析中,文件号也会不同,推荐大家将文件号设置为一个较大的数字,如:1001010086等。


往期推荐

相关文章,在仿真秀官网搜索:

Fortran基础编程(入门简介篇)

FORTRAN基础编程(1)——基本格式及输出、读入

FORTRAN基础编程(2)——声明变量

Fortran基础编程(3)——格式化输出

Fortran基础编程(4)——声明与程序结构

Fortran基础编程(5)——Subroutine正确食用方法

Fortran数值计算——矩阵操作函数(可自用)

Simply Fortran 保姆级教程

Fortran编程实例01

Fortran编程实例02

Fortran基础编程——OpenMP并行计算

Fortran基础编程——牛顿拉弗森迭代

关于Fortran编译遇到“The system cannot find the path specified.”的情况说明


来源:易木木响叮当
ACTAbaqus
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2023-06-02
最近编辑:1年前
易木木响叮当
硕士 有限元爱好者
获赞 225粉丝 285文章 355课程 2
点赞
收藏
未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习计划 福利任务
下载APP
联系我们
帮助与反馈