Fortran Coder

查看: 13447|回复: 9
打印 上一主题 下一主题

[输入输出] IVF上fortran中利用read将字符串的数据赋给变量,出现NAN

[复制链接]

19

帖子

0

主题

0

精华

专家

F 币
370 元
贡献
122 点
楼主
发表于 2021-11-8 07:53:06 | 显示全部楼层
我猜你是有一个文件要读取,然后你把每一行读成字符串然后再把字符串读成变量?
或者是有很多文件,然后要从每个文件里读一些header?(因为这很像是bash或者gnuplot的header)。

(a)如果是
你可以去检查一下你需要读取的文件,是否每一行的格式都是固定的?
如果有的时候第二个数字多一位少一位,后面的数据就会读不出来。我记得论坛里面之前有提到过,读这种文本格式的数据用类似
[Fortran] 纯文本查看 复制代码
read(file_unit, *) var1

这种格式会方便一些。

(b)如果不是
那你可能要稍微提供多一点的信息。
回复

使用道具 举报

19

帖子

0

主题

0

精华

专家

F 币
370 元
贡献
122 点
沙发
发表于 2021-11-9 07:29:20 | 显示全部楼层
你可能要提供一个minimal bug report,我这边写了一个非常短的代码去尝试复现你的问题
[Fortran] 纯文本查看 复制代码
program main

    implicit none
    character(len=:), allocatable :: string_line
    integer :: a, c
    real :: b, d

    string_line = '## 2145 172800.00000000 900.00000000 59261 0.000000000 '
    read (string_line, '(3x,i4,17x,f14.8,1x,i5,1x,f15.13)') a, b, c, d
    print *, a, b, c, d
    read (string_line, '(3x,i4,17x,f14.8,1x,i5,1x,f15.13)') a, b, c, d
    print *, a, b, c, d

end program main

这段代码我在gfortran上面编译和运行是没有问题的。
回复

使用道具 举报

19

帖子

0

主题

0

精华

专家

F 币
370 元
贡献
122 点
板凳
发表于 2021-11-10 02:34:20 | 显示全部楼层
律1234 发表于 2021-11-9 13:34
我也试过将这个字符串单独写出来,也都是正常的,主要是搁在我的一个大的整体程序下,就会出现以上问题, ...

如果单独把这个字符串写出来是正常的,但是放进大程序里面就不行,那说明问题不出在这儿。这就是为什么楼上让你把最小的能复现bug的程序提供出来的原因(也就是我说的minimal bug report),这样我们才能判断这是否是编译器的问题。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-5-3 20:00

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表