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

将文件整数读入实型变量时遇list-directed I/O syntax error问题

Fortran列表式I/O语法错误:ifort与gfortran的行为差异

问题重现

编写Fortran代码读取文件中的整数到实型数组,逻辑看似简单,但用ifort编译运行后触发列表式I/O语法错误。

代码示例:

real :: a(3)
open(newunit=u,file='t.txt', status='old')
do j=1,3
  read(u,*) a(j)
enddo

最初提供的数据文件t.txt内容:

1 
2 
3 

ifort编译运行后的报错信息:

forrtl: severe (59): list-directed I/O syntax error

尝试多种编译选项均无法解决,起初误以为是ifort不支持整数转实型的自动转换。


问题根源(更新)

最终排查发现,问题与类型转换完全无关——数据文件中意外混入了分号:

  • gfortran对这类非预期的分隔符容忍度较高,可正常读取文件
  • ifort的列表式I/O语法检查更严格,遇到不符合规范的字符直接触发报错

总结

  1. 列表式I/O(即read(*,*)/write(*,*)这类自由格式I/O)在不同编译器下的行为存在差异,ifort对语法合规性的要求比gfortran更严苛
  2. 排查Fortran I/O错误时,不要只聚焦变量类型匹配,务必检查数据文件中是否存在隐藏特殊字符、多余分隔符这类细节

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 03:52:05