Fortran Coder

标题: 求教;Fortran如何强制不自动换行 [打印本页]

作者: Villain    时间: 2015-3-17 14:52
标题: 求教;Fortran如何强制不自动换行
今天在用microsoft visual fortran 2008的时候,用write(11,*)输出时给自动换行了,然后我改成write(11,*,advance="no")编译报错报错内容是:“エラー        1         error #6568: ADVANCE、SIZE、または EOR 指定子のこの使用は無効です。”

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

求指点,谢谢了!!



作者: fcode    时间: 2015-3-17 15:11
advance只能在格式符号后面使用。* 输出不能使用。
作者: Villain    时间: 2015-3-17 15:16
fcode 发表于 2015-3-17 15:11
advance只能在格式符号后面使用。* 输出不能使用。

谢了,那有没有在*输出的情况下不换行的方法?
作者: fcode    时间: 2015-3-17 16:24
[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

作者: Villain    时间: 2015-3-18 08:56
fcode 发表于 2015-3-17 16:24
[mw_shl_code=fortran,true]Program www_fcode_cn
  Implicit None
  character(len=3000) :: c !// 3000  ...

看来也只能这样操作了,谢啦!
作者: pasuka    时间: 2015-3-18 13:53
http://fcode.cn/code_gen-63-1.html
参考这个链接吧,用格式化字符串很复杂吗?

作者: Villain    时间: 2015-3-18 16:31
pasuka 发表于 2015-3-18 13:53
http://fcode.cn/code_gen-63-1.html
参考这个链接吧,用格式化字符串很复杂吗?

谢谢,这篇文章拜读过了,因为本身是用Fortran转写一段VBA,里面涉及到要输出一些地名,地名的长度并不一定,而且还夹杂着字母符号和字符,写循环来判断长度有点得不偿失,所以看看有没有我不知道的方法。能快速解决这个问题的。
作者: kerb    时间: 2015-3-21 23:31
你是IVF吧,试一下这个:WRITE(*, FMT = '(A25,\)')"XXXXXXXXXXXXX"
作者: 百事可乐    时间: 2015-3-22 12:39
kerb 发表于 2015-3-21 23:31
你是IVF吧,试一下这个:WRITE(*, FMT = '(A25,\)')"XXXXXXXXXXXXX"

问题就是他不想用格式符
作者: Villain    时间: 2015-3-23 09:41
kerb 发表于 2015-3-21 23:31
你是IVF吧,试一下这个:WRITE(*, FMT = '(A25,\)')"XXXXXXXXXXXXX"

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




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