Fortran Coder

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

[文件读写] 输出一个很长的数据到文件的同一行

[复制链接]

35

帖子

11

主题

0

精华

熟手

F 币
241 元
贡献
140 点
跳转到指定楼层
楼主
发表于 2021-9-15 14:31:31 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式
想将一个二维数组的一列数据输出到文件中的同一行,(数组见图,有19万多行)
write(110, *)  points(:, 1)
但是代码执行后,确实按列的顺序输出了,在文件里却每隔6个数据自动换行。
查了一下度娘和书,在write里面用advance控制
write(110, *, advance="NO")  points(:, 1)
然鹅却报错了~
:error #6568: This use of the ADVANCE, SIZE, or EOR specifier is invalid
又查了下百度说是intel的编译器不支持这个用法,请问大佬们有什么解决办法吗?

捕获.PNG (63.46 KB, 下载次数: 267)

文件里的输出

文件里的输出

捕获.PNG (117.75 KB, 下载次数: 256)

数组

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

1

帖子

0

主题

0

精华

新人

F 币
15 元
贡献
7 点
10#
发表于 2022-11-25 23:02:31 | 只看该作者
也可以这样
write(1,'(100E)') (points(i,1),i=1,n_points)

一行要输出的不多的二维数组,可以直接
do i=1,n
    write(1,*)(a(i,j),j=1,3)
end do

评分

参与人数 1F 币 +1 收起 理由
fcode + 1 do循环写write(1,*) a(i,:) 就可以了.

查看全部评分

35

帖子

11

主题

0

精华

熟手

F 币
241 元
贡献
140 点
9#
 楼主| 发表于 2021-9-15 17:31:21 | 只看该作者
胡文刚 发表于 2021-9-15 17:04
do i=1,n_points
        write(110, "(es13.6)", advance = "NO") points(i, 1)
    enddo

感谢,原来问题出在这,多谢您

101

帖子

0

主题

0

精华

大师

F 币
670 元
贡献
299 点

规矩勋章元老勋章新人勋章

8#
发表于 2021-9-15 17:04:33 | 只看该作者
   do i=1,n_points
        write(110, "(es13.6)", advance = "NO") points(i, 1)
    enddo

评分

参与人数 1F 币 +4 收起 理由
fcode + 4

查看全部评分

天之道,损有余而补不足

35

帖子

11

主题

0

精华

熟手

F 币
241 元
贡献
140 点
7#
 楼主| 发表于 2021-9-15 16:55:09 | 只看该作者
li913 发表于 2021-9-15 16:43
可能是显示的问题,如果是用记事本打开,取消自动换行。每行数据过多,其他软件也可能有这个问题。 ...

谢谢您的回复!但是不是显示的原因,已经排查过这个了

835

帖子

2

主题

0

精华

大宗师

F 币
3926 元
贡献
2334 点
6#
发表于 2021-9-15 16:43:48 | 只看该作者
jojo9 发表于 2021-9-15 16:15
而且也不是电脑内存限制的原因,换了计算电脑试了下,依旧会写成三行

可能是显示的问题,如果是用记事本打开,取消自动换行。每行数据过多,其他软件也可能有这个问题。

评分

参与人数 1F 币 +4 收起 理由
fcode + 4

查看全部评分

35

帖子

11

主题

0

精华

熟手

F 币
241 元
贡献
140 点
5#
 楼主| 发表于 2021-9-15 16:15:25 | 只看该作者
本帖最后由 jojo9 于 2021-9-15 16:16 编辑
胡文刚 发表于 2021-9-15 15:47
write(110, "(*(es13.6))")  points(:, 1)

而且也不是电脑内存限制的原因,换了计算电脑试了下,依旧会写成三行

捕获.PNG (21.65 KB, 下载次数: 251)

捕获.PNG

35

帖子

11

主题

0

精华

熟手

F 币
241 元
贡献
140 点
地板
 楼主| 发表于 2021-9-15 16:07:36 | 只看该作者
胡文刚 发表于 2021-9-15 15:47
write(110, "(*(es13.6))")  points(:, 1)

您好,我刚试过格式化输出,但是这样依旧没写在同一行,一行写入某个数量的数据后依旧换行了,是编译器的限制吗

捕获.PNG (25.57 KB, 下载次数: 232)

捕获.PNG

101

帖子

0

主题

0

精华

大师

F 币
670 元
贡献
299 点

规矩勋章元老勋章新人勋章

板凳
发表于 2021-9-15 15:47:45 | 只看该作者
write(110, "(*(es13.6))")  points(:, 1)
天之道,损有余而补不足

35

帖子

11

主题

0

精华

熟手

F 币
241 元
贡献
140 点
沙发
 楼主| 发表于 2021-9-15 14:45:11 | 只看该作者
  改成这种形式也不行
    do i=1,n_points
        write(110, *, advance = "NO") points(i, 1)
    enddo
同样的报错
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

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

GMT+8, 2024-11-23 09:51

Powered by Tencent X3.4

© 2013-2024 Tencent

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