Fortran Coder

标题: 新手读txt老报错,求助 [打印本页]

作者: zmc    时间: 2023-12-13 11:58
标题: 新手读txt老报错,求助
[Fortran] 纯文本查看 复制代码
Program fcode_cn
  Implicit None
  Integer, Parameter :: NROW = 3, NCOL = 4
  Integer :: b(NROW, NCOL), i, j
  Open(10, File="E:\xxxx.txt")
  Do i = 1, NROW
     Do j = 1, NCOL
        Read(10, *) b(i, j)
     End Do
  End Do
  Close(10)
End Program fcode_cn


5}M)`$ZKWE%DA@H70$~$1[3.png (32.73 KB, 下载次数: 47)

5}M)`$ZKWE%DA@H70$~$1[3.png

9NL`P{W`83U$U}F$T2_YFH6.png (18.05 KB, 下载次数: 46)

9NL`P{W`83U$U}F$T2_YFH6.png

66`FP0K40K5{HZ%${DL9{IL.png (18.85 KB, 下载次数: 46)

66`FP0K40K5{HZ%${DL9{IL.png

作者: fcode    时间: 2023-12-13 20:38
有格式顺序读取,表控格式 read(??,*) 的读取单位是行。
内部实现是这样的:

读取一整行,分配到read后面的变量列表。
如果该行内数据超过变量列表,则多余的部分被丢弃。
如果该行内数据不足,则继续读取下一个整行,重复上述过程。直到总的变量数量达到变量列表的要求为止。

所以,每次read至少会读一行,你写成 3*4 的二重循环,要求文件中至少12行。
改成单层循环。
Do i = 1, NROW
    Read(10, *) b(i, :)
  End Do

甚至你可以不用循环
Read(10, *) b
就行了。但最好b定义为  b(NCOL,NROW)

[Fortran] 纯文本查看 复制代码
Program fcode_cn
  Implicit None
  Integer, Parameter :: NROW = 3, NCOL = 4
  Integer :: b(NROW, NCOL), i, j
  Open(10, File="E:\xxxx.txt")
  Do i = 1, NROW
    Read(10, *) b(i, :)
  End Do
  Close(10)
End Program fcode_cn







欢迎光临 Fortran Coder (http://bbs.fcode.cn/) Powered by Discuz! X3.2