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

Fortran中按指定格式写入数组元素至文件:k列写法问询

Fortran数组写入文件:k列的处理方案

你只需要在外层循环的每次迭代中,用k(i)获取当前的k值即可——外层循环的i恰好对应k数组的索引,内层循环遍历kp的所有元素时,k的取值固定为k(i),完全匹配你需要的输出格式。

另外,原代码使用的自由格式*会导致输出列不对齐,建议改用格式化输出语句来保证列间距和示例一致,修正后的完整代码如下:

program write_arrays
  implicit none
  integer :: k(2), kp(2), w(2,2)
  integer :: i, j, unit_num

  ! 初始化数组
  k = [1, 2]
  kp = [1, 2]
  w = reshape([1,2,3,4], [2,2])  ! 按列存储,对应w(1,1)=1, w(1,2)=2, w(2,1)=3, w(2,2)=4

  ! 打开文件(自动分配可用单元号,不存在则创建,存在则覆盖)
  open(newunit=unit_num, file='output.txt', status='replace', action='write')

  ! 写入表头,用格式化输出保证对齐
  write(unit_num, '(A5,A5,A10)') "k", "kp", "w(k,kp)"
  write(unit_num, *)  ! 写入空行分隔表头和数据

  ! 嵌套循环写入数据
  do i = 1, 2
    do j = 1, 2
      ! 用I5格式符,每个整数占5个字符宽度,确保列对齐
      write(unit_num, '(I5,I5,I5)') k(i), kp(j), w(i,j)
    end do
  end do

  ! 关闭文件
  close(unit_num)
end program write_arrays

关键说明:

  • k(i):外层循环i遍历k数组的每个元素,内层循环遍历kp时,k值保持为k(i),正好输出你需要的1,1,2,2序列。
  • reshape:将一维数组转为二维数组,Fortran默认按列存储,所以reshape([1,2,3,4], [2,2])会生成你需要的二维数组w。
  • 格式化输出(I5,I5,I5):每个整数占5个字符宽度,确保列对齐;表头用(A5,A5,A10)调整宽度,让表头和数据列对应。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 20:25:20