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

Fortran读取含多类型元素数组时出现坏实数运行时错误如何解决

你遇到的报错根源是输入文件DATA.inp存在笔误,和你猜测的首列是整数无关——Fortran自由格式输入支持自动将整数转换为实数赋值给实型变量,不需要刻意把首列改成浮点数。

你提供的DATA.inp第二行第二个数据为2O.,这里是大写英文字母O,不是数字0,Fortran运行时读到这个包含字母的字段时,无法将其解析为合法实数,就会抛出你遇到的报错:

文件test.f第8行(单元 = 1,文件 = 'DATA.inp')
Fortran运行时错误:列表输入的第2项为无效实数

因为第一行数据格式是正确的,所以第一次循环读取正常,第二次循环读第二行的时候触发错误。

修复方法

  1. 修正输入文件笔误:把DATA.inp第二行的2O.改成正确的20.即可正常运行。
  2. 可选优化代码健壮性,参考修改后的代码:
PROGRAM test
    IMPLICIT NONE 
    REAL INP(8,1000)
    REAL INP1(1000), INP2(1000)
    INTEGER :: i, j, ierr
    ! 打开文件增加错误检查
    OPEN(1,FILE='DATA.inp', STATUS='OLD', IOSTAT=ierr)
    IF (ierr /= 0) THEN
        WRITE(*,*) "打开DATA.inp失败"
        STOP
    END IF
    i = 1
    DO
        READ(1,*,END=100, IOSTAT=ierr) (INP(j,i), j=1,8)
        IF (ierr /= 0) THEN
            WRITE(*,*) "读取第",i,"行出错"
            EXIT
        END IF
        INP1(i) = INP(1,i)
        INP2(i) = INP(2,i)
        WRITE(*,*) INP1(i), INP2(i)
        i = i + 1
    END DO
100 CONTINUE     
    CLOSE(1) ! 关闭文件单元
END PROGRAM

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 00:36:02