Fortran Coder

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

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

[复制链接]

10

帖子

3

主题

0

精华

入门

F 币
41 元
贡献
29 点
跳转到指定楼层
楼主
发表于 2021-11-7 19:30:07 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式
5F 币

在Visual Fortran上,利用fortran中的read将字符串中的数据赋值给各个对应的变量,结果出现NAN,而且还是中间的数据出现NAN

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

循环的时候,结果有时正常,有时b却为NAN

这种情况可能是由什么原因引起的啊?希望各位大神能指点一二


分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

10

帖子

3

主题

0

精华

入门

F 币
41 元
贡献
29 点
沙发
 楼主| 发表于 2021-11-8 09:17:07 | 显示全部楼层
唐汉 发表于 2021-11-8 07:53
我猜你是有一个文件要读取,然后你把每一行读成字符串然后再把字符串读成变量?
或者是有很多文件,然后要 ...

确实是在读文件,我也试过你说的这种方式读取,但还是一样NAN,而且我发现将read这句再写一次,也就是连续读两次这个字符串,
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
read (string_line, '(3x,i4,17x,f14.8,1x,i5,1x,f15.13)') a, b, c, d
居然第一次是NAN,第二次是正确的,这就离谱了(用*也一样)。
回复

使用道具 举报

10

帖子

3

主题

0

精华

入门

F 币
41 元
贡献
29 点
板凳
 楼主| 发表于 2021-11-9 13:34:27 | 显示全部楼层
唐汉 发表于 2021-11-9 07:29
你可能要提供一个minimal bug report,我这边写了一个非常短的代码去尝试复现你的问题
[mw_shl_code=fortra ...

我也试过将这个字符串单独写出来,也都是正常的,主要是搁在我的一个大的整体程序下,就会出现以上问题,现在虽然将那一句运行两次整个程序能够运行,但第一次运行总是NAN,第二次就是正确的
回复

使用道具 举报

10

帖子

3

主题

0

精华

入门

F 币
41 元
贡献
29 点
地板
 楼主| 发表于 2021-11-9 13:37:15 | 显示全部楼层
fcode 发表于 2021-11-9 08:44
read (string_line, '(3x,i4,17x,f14.8,1x,i5,1x,f15.13)') a, b, c, d
改为
character(len=1) :: x

试过了,没用,四个数据,就第二个数据会出问题;整个大程序中还有另外一个地方也是读文件,出现同样的问题,而且也是第二个数据出问题,前后的数据都是正常的
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-3 19:35

Powered by Tencent X3.4

© 2013-2024 Tencent

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