Fortran Coder

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

[输入输出] 求教;Fortran如何强制不自动换行

[复制链接]

60

帖子

17

主题

0

精华

专家

F 币
454 元
贡献
266 点
跳转到指定楼层
楼主
发表于 2015-3-17 14:52:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
今天在用microsoft visual fortran 2008的时候,用write(11,*)输出时给自动换行了,然后我改成write(11,*,advance="no")编译报错报错内容是:“エラー        1         error #6568: ADVANCE、SIZE、または EOR 指定子のこの使用は無効です。”

是这个版本的fortran不支持advance么?由于输出文字符的数组,元素的长度不确定,用格式符来控制的话很麻烦。

求指点,谢谢了!!


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

1967

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1369 元
贡献
581 点

美女勋章热心勋章星光勋章新人勋章贡献勋章管理勋章帅哥勋章爱心勋章规矩勋章元老勋章水王勋章

沙发
发表于 2015-3-17 15:11:08 来自移动端 | 只看该作者
advance只能在格式符号后面使用。* 输出不能使用。

60

帖子

17

主题

0

精华

专家

F 币
454 元
贡献
266 点
板凳
 楼主| 发表于 2015-3-17 15:16:01 | 只看该作者
fcode 发表于 2015-3-17 15:11
advance只能在格式符号后面使用。* 输出不能使用。

谢了,那有没有在*输出的情况下不换行的方法?

1967

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1369 元
贡献
581 点

美女勋章热心勋章星光勋章新人勋章贡献勋章管理勋章帅哥勋章爱心勋章规矩勋章元老勋章水王勋章

地板
发表于 2015-3-17 16:24:41 | 只看该作者
[Fortran] 纯文本查看 复制代码
Program www_fcode_cn
  Implicit None
  character(len=3000) :: c !// 3000 要足够长
  real :: r(30) = 3.141592654 !// 这个数组用来测试输出
  integer :: i  
  Open( 15 , File = "t.txt" ) !// 打开一个文件
  write( c , * ) r !// 先写到字符串里
  do i = 1 , len_trim(c)
    if( c(i:i) == char(13) .or. c(i:i) == char(11) ) c(i:i) = " " !// 把字符串的回车替换成空格
  end do
  write( 15 , '(a)' ) trim(c) !// 再写入文件
End Program www_fcode_cn

60

帖子

17

主题

0

精华

专家

F 币
454 元
贡献
266 点
5#
 楼主| 发表于 2015-3-18 08:56:27 | 只看该作者
fcode 发表于 2015-3-17 16:24
[mw_shl_code=fortran,true]Program www_fcode_cn
  Implicit None
  character(len=3000) :: c !// 3000  ...

看来也只能这样操作了,谢啦!

490

帖子

4

主题

0

精华

大宗师

F 币
3298 元
贡献
1948 点

水王勋章元老勋章热心勋章

6#
发表于 2015-3-18 13:53:39 | 只看该作者
http://fcode.cn/code_gen-63-1.html
参考这个链接吧,用格式化字符串很复杂吗?

60

帖子

17

主题

0

精华

专家

F 币
454 元
贡献
266 点
7#
 楼主| 发表于 2015-3-18 16:31:50 | 只看该作者
pasuka 发表于 2015-3-18 13:53
http://fcode.cn/code_gen-63-1.html
参考这个链接吧,用格式化字符串很复杂吗?

谢谢,这篇文章拜读过了,因为本身是用Fortran转写一段VBA,里面涉及到要输出一些地名,地名的长度并不一定,而且还夹杂着字母符号和字符,写循环来判断长度有点得不偿失,所以看看有没有我不知道的方法。能快速解决这个问题的。

59

帖子

2

主题

0

精华

大师

F 币
810 元
贡献
476 点
8#
发表于 2015-3-21 23:31:22 | 只看该作者
你是IVF吧,试一下这个:WRITE(*, FMT = '(A25,\)')"XXXXXXXXXXXXX"

100

帖子

0

主题

0

精华

专家

F 币
550 元
贡献
291 点

规矩勋章元老勋章

QQ
9#
发表于 2015-3-22 12:39:52 | 只看该作者
kerb 发表于 2015-3-21 23:31
你是IVF吧,试一下这个:WRITE(*, FMT = '(A25,\)')"XXXXXXXXXXXXX"

问题就是他不想用格式符

60

帖子

17

主题

0

精华

专家

F 币
454 元
贡献
266 点
10#
 楼主| 发表于 2015-3-23 09:41:00 | 只看该作者
kerb 发表于 2015-3-21 23:31
你是IVF吧,试一下这个:WRITE(*, FMT = '(A25,\)')"XXXXXXXXXXXXX"

谢谢指点。
由于字符长度并不确定,而且还是数字和字符夹杂在一起输出(要输出成csv格式),没法统一用一种格式。
由于要考虑到兼容性,无法使用<>来操作,最后的解决方法还是只有采用http://fcode.cn/code_gen-63-1.html 这篇文章中提到的方法了。
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

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

GMT+8, 2024-5-11 18:48

Powered by Tencent X3.4

© 2013-2024 Tencent

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