24小时热门版块排行榜    

查看: 1045  |  回复: 9
当前主题已经存档。
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

sunnyrain108

木虫 (著名写手)

[交流] 【求助】请教一个关于write的问题,谢谢~

请教各位:下面代码中 write(tdate(3:3),'(i1)') nday是啥意思?write命令的格式不是write(UNIT=number,FMT=fomat,...)的吗?tdate是个字符型的时间变量,nday是个整数。谢谢~

    integer nday              
    character*10 tdate      
   

    if (nday .lt. 10) then
        write(tdate(3:3),'(i1)') nday
    else if (nday .lt. 100) then
         write(tdate(2:3),'(i2)') nday
    else
        write(tdate(1:3),'(i3)') nday
    end if
回复此楼

» 猜你喜欢

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

tjyl

金虫 (正式写手)

大陆的人写的书上基本没有讲过这个吧,所以很多人不知道。编译器文档应该都有的。
引用回帖:
Originally posted by argo at 2009-8-12 19:09:

谢谢,我没有用那么多那么深,所以很多东西只停留在一知半解而已。哪天有用到再翻书了。

9楼2009-08-12 19:14:28
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 10 个回答

rjjy

木虫 (著名写手)


小木虫(金币+0.5):给个红包,谢谢回帖交流
2楼2009-07-25 10:30:50
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

tjpm

金虫 (正式写手)

★ ★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
wangen994(金币+3,VIP+0):感谢你参与讨论 7-25 14:03
这个是 fortran 的内部文件。彭国伦的《Fortran95程序设计》讲了的。
可以参考SUN的文档:
2.5 内部文件

内部文件是 CHARACTER 类型的对象,如变量、子串、数组、数组元素或结构化记录的字段。内部文件 READ 可以来自常量字符串。内部文件 I/O 通过由一个字符对象向另一数据对象传送和转换数据,模拟格式化 READ 和 WRITE 语句。不执行任何文件 I/O。

使用内部文件时:

    *

      出现在 WRITE 语句中的是接收数据的字符对象的名称而非单元号。在 READ 语句中,出现的是字符对象源的名称而非单元号。
    *

      常量、变量或子串对象构成文件中的单条记录。
    *

      使用数组对象,每个数组元素对应于一条记录。
    *

      内部文件上的直接 I/O。(Fortran 95 标准只包括内部文件上的顺序格式化 I/O。)除了不能更改文件中的记录数之外,这一点与外部文件上的直接 I/O 相似。此时,记录是字符串数组的单个元素。这项非标准扩展仅在用 -f77 标志编译的 FORTRAN 77 兼容模式下可用。
    *

      每一顺序 READ 或 WRITE 语句均始于内部文件的开头。

示例:从内部文件(仅有一条记录)中以顺序、格式化方式进行读取:

demo% cat intern1.f
      CHARACTER X*80
      READ( *, ’(A)’ ) X
      READ( X, ’(I3,I4)’ ) N1, N2 ! This codeline reads the internal file X
      WRITE( *, * )  N1, N2
      END
demo% f95 -o tstintern intern1.f
demo% tstintern
12 99
12 99
demo%

示例:从内部文件(三条记录)中以顺序、格式化方式进行读取:

demo% cat intern2.f
      CHARACTER  LINE(4)*16
      DATA  LINE(1) / ’ 81  81 ’ /
      DATA  LINE(2) / ’ 82  82 ’ /
      DATA  LINE(3) / ’ 83  83 ’ /
      DATA  LINE(4) / ’ 84  84 ’ /
      READ( LINE,’(2I4)’) I,J,K,L,M,N
      PRINT *, I, J, K, L, M, N
      END
demo% f95 intern2.f
demo% a.out
   81  81  82  82  83  83
demo%

示例:在 -f77 兼容模式下,从内部文件(一条记录)中以直接访问方式进行读取:

demo% cat intern3.f
      CHARACTER LINE(4)*16
      DATA  LINE(1) / ’ 81  81 ’ /
      DATA  LINE(2) / ’ 82  82 ’ /
      DATA  LINE(3) / ’ 83  83 ’ /
      DATA  LINE(4) / ’ 84  84 ’ /
      READ ( LINE, FMT=20, REC=3 ) M, N
20       FORMAT( I4, I4 )
      PRINT *, M, N
      END
demo% f95 -f77 intern3.f
demo% a.out
   83  83
demo%
http://docs.sun.com/app/docs/doc ... 9df?l=zh&a=view


http://bbs.pfan.cn/post-102851.html上也有介绍

3. 如何用Fortran动态生成输出格式?
设有一个数组data(100),输出时,希望每行输出num个数,而num由用户输入,如何实现?

用内部文件:
character(len=80) :: form
real :: data(100)
integer :: i,num

data = (/ (i,i=1,100) /)/10.0
read(*,*) num
write(form,*) "(",num,"f10.3)"
write(*,form) data

stop
end
3楼2009-07-25 12:16:28
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

calos818

木虫 (著名写手)

新人菜鸟


小木虫(金币+0.5):给个红包,谢谢回帖交流
只会write(*,*)用法,学习了
5楼2009-08-12 10:46:39
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通表情 高级回复 (可上传附件)
信息提示
请填处理意见