You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Fortran程序中输出10列8行格式的数据集至新TXT文件?

问题分析与解决方案

原代码存在几个关键问题导致输出格式不符合要求:

  • 数组维度与数据规模不匹配(若原数据是10列80行,数组应定义为(10,80);若目标是输出10列8行,数组则对应(10,8))
  • 写入循环逻辑错误:循环80次每次写入整个数组,会重复输出80遍完整数据
  • 未指定输出格式,导致数据无规则连续排列

修正后的代码示例

场景1:原数据为10列80行,输出保持10列80行

program test
    implicit none
    integer::i
    ! Fortran数组按(列数, 行数)定义,对应10列80行的数据集
    real,dimension(10,80)::data
    
    ! 打开输入文件,status='old'确保文件已存在
    open(unit=7, file='C:\USERS\SAM\DOCUMENTS\FORTRAN\DATA.TXT', status='old')
    ! 一次性读取所有数据到数组
    read(7, *) data
    close(7)  ! 读取完成后关闭文件
    
    ! 打开输出文件,status='replace'覆盖已有文件
    open(unit=8, file='C:\USERS\SAM\DOCUMENTS\FORTRAN\TESTDATA.TXT', status='replace')
    ! 循环遍历每一行,每行输出10个元素(10列)
    do i = 1, 80
        ! '(10F10.4)'表示每行输出10个浮点数,每个占10位宽度、保留4位小数(可按需调整)
        write(8, '(10F10.4)') data(:, i)
    end do
    close(8)  ! 写入完成后关闭文件

end program test

场景2:原数据为80个元素,输出按10列8行排列

如果原数据是80个连续元素,需要整理为10列8行格式输出,调整数组维度和循环次数即可:

program test
    implicit none
    integer::i
    real,dimension(10,8)::data
    
    open(unit=7, file='C:\USERS\SAM\DOCUMENTS\FORTRAN\DATA.TXT', status='old')
    read(7, *) data
    close(7)
    
    open(unit=8, file='C:\USERS\SAM\DOCUMENTS\FORTRAN\TESTDATA.TXT', status='replace')
    do i = 1, 8
        write(8, '(10F10.4)') data(:, i)
    end do
    close(8)

end program test

关键说明

  • 数组维度逻辑:Fortran采用列主序存储,dimension(列数, 行数)的定义方式更贴合行列展示逻辑
  • 输出格式控制:格式化字符串(10F10.4)是实现列对齐的核心,可根据数据精度调整参数,比如F8.2表示占8位宽度、保留2位小数
  • 文件操作规范:读写完成后及时关闭文件,使用status参数能避免文件异常
  • 循环逻辑:循环遍历数组的行索引,每次输出该行的所有列元素,确保每行严格对应10列数据

内容的提问来源于stack exchange,提问作者Sujeewa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 01:52:54