file-io - Fortran read 语句读取序列
问题描述
假设我有一个文件,每行包含一个数组索引,后跟数组值
i array(i)
我可以天真地读入数据read(unit=10, *) i, array(i)
吗?Fortran 是否总是i
先读取然后使用此i
值进行分配array(i)
?某些read
规范或编译器标志会影响行为吗?
解决方案
数据传输声明
read(unit=10,*) i, array(i)
是一个合法的,并且它的行为是所希望的:从记录中i
首先读取值,然后该值用于标识数组的元素以array(i)
读取第二个值。
这是 Fortran 规范的要求,例如使用 (Fortran 2018, 12.6.4.5.1):
确定输入/输出列表项指定哪些实体所需的所有值都在处理该项的开始时确定。
当然,尽管此数据传输语句可能有效,但这并不意味着它在您信任输入数据的最简单情况下都是可取的。特别是,在这个 read 语句期间不可能对边界进行任何检查。如果i
读取的值对应于无效的数组元素规范,则程序被破坏。您可能只想使用数组元素的中间值来处理输入文件的潜在问题。
推荐阅读
- java - 导航抽屉活动未加载所有片段
- powershell - 获取电子邮件组成员的 PowerShell 命令 - Get-ADGroupMember 不起作用
- c# - 删除 DirectoryName 的一部分
- laravel - 通过 app() 获取/迭代 laravel 服务容器中的数据
- swift - SwiftUI - 将图像保存到共享表会导致图像保存模糊/低分辨率
- python-3.x - 为什么我安装的 python 模块没有在脚本中导入?
- github - 使用 gh-pages 工作树时,如何从另一台计算机部署我的站点?
- c# - HTTP POST 不显示结果
- python - Python/C API 项目 - 编译为 exe
- javascript - 如何处理猫鼬中的循环依赖关系?