24小时热门版块排行榜    

Znn3bq.jpeg
查看: 1209  |  回复: 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的回帖

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的回帖

sunnyrain108

木虫 (著名写手)

非常感谢!

非常感谢
4楼2009-07-25 14:42:24
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

calos818

木虫 (著名写手)

新人菜鸟


小木虫(金币+0.5):给个红包,谢谢回帖交流
只会write(*,*)用法,学习了
5楼2009-08-12 10:46:39
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

argo

铁杆木虫 (著名写手)

上善若水

★ ★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
0112358(金币+3,VIP+0):鼓励交流 8-12 19:41
之前程序应该有打开了三个文件,三个文件所对应的部件号分别为tdate中第1-3个字符,即假定tdate为"1234567890",则
CODE:
    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

相当于
CODE:
    if (nday .lt. 10) then
        write(3,'(i1)') nday
    else if (nday .lt. 100) then
         write(23,'(i2)') nday
    else
        write(123,'(i3)') nday
    end if

之前程序中应该有类似于以下的语句:
CODE:
open(3,file="file1.dat")
open(23,file="file2.dat")
open(123,file="file3.dat")

个人想当然地认为,没有经过测试哦,仅供参考。
居善地,心善渊,与善仁,言善信,正善治,事善能,动善时。
6楼2009-08-12 12:27:05
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

tjyl

金虫 (正式写手)


小木虫(金币+0.5):给个红包,谢谢回帖交流
其实大部分时候就是为了动态格式输出/输入用吧。
引用回帖:
Originally posted by argo at 2009-8-12 12:27:
之前程序应该有打开了三个文件,三个文件所对应的部件号分别为tdate中第1-3个字符,即假定tdate为"1234567890",则
[code]
    if (nday .lt. 10) then
        write(tdate(3:3),'(i1)') nday
    ...

[ Last edited by tjyl on 2009-8-12 at 19:08 ]
7楼2009-08-12 19:05:40
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

argo

铁杆木虫 (著名写手)

上善若水

引用回帖:
Originally posted by tjyl at 2009-8-12 19:05:
其实大部分时候就是为了动态格式输出/输入用吧。



[ Last edited by tjyl on 2009-8-12 at 19:08 ]

谢谢,我没有用那么多那么深,所以很多东西只停留在一知半解而已。哪天有用到再翻书了。
居善地,心善渊,与善仁,言善信,正善治,事善能,动善时。
8楼2009-08-12 19:09:17
已阅   回复此楼   关注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的回帖

sunnyrain108

木虫 (著名写手)

余泽成(金币+0,VIP+0):中秋快乐!欢迎常来程序软件版! 10-3 20:40
以解决,谢谢啦
10楼2009-10-03 20:31:55
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 sunnyrain108 的主题更新
普通表情 高级回复 (可上传附件)
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[硕博家园] 考博自荐 +4 科研狗111 2026-05-13 5/250 2026-05-18 08:16 by Equinoxhua
[基金申请] 重磅!青年科学基金项目(C类)资助增幅预计超过50% +7 水和泥不是水泥 2026-05-13 10/500 2026-05-18 07:50 by 水和泥不是水泥
[找工作] 售SCI一区T0P文章,我:8.O.5.5.1.O.5.4,科目齐全,可+急 +4 ky2p12rrjj 2026-05-15 4/200 2026-05-17 19:47 by Equinoxhua
[硕博家园] 售SCI一区T0P文章,我:8.O.5.5.1.O.5.4,科目齐全,可+急 +6 l7k6xnh0yc 2026-05-14 7/350 2026-05-17 19:42 by Equinoxhua
[找工作] 售SCI一区T0P文章,我:8.O.5.5.1.O.5.4,科目齐全,可+急 +5 l7k6xnh0yc 2026-05-14 5/250 2026-05-17 19:39 by Equinoxhua
[考研] 售SCI一区T0P文章,我:8.O.5.5.1.O.5.4,科目齐全,可+急 +4 xx7gd5zq4e 2026-05-15 6/300 2026-05-17 19:36 by Equinoxhua
[考研] 售SCI一区T0P文章,我:8.O.5.5.1.O.5.4,科目齐全,可+急 +6 cjf4bx70cj 2026-05-14 7/350 2026-05-17 18:49 by Equinoxhua
[教师之家] 上海大学实验技术岗位非升即走 +7 嘻嘻哈哈乐呵呵 2026-05-15 7/350 2026-05-17 16:58 by songwz
[考博] 2026博士还有哪些学校有名额 +6 小王求读研 2026-05-15 7/350 2026-05-17 16:54 by 知音湖畔
[考博] 西南大学考核制博士 +5 lijunjie84 2026-05-11 8/400 2026-05-17 14:21 by 鹅鹅鹅鹅aaa
[考研] 售SCI一区T0P文章,我:8.O.5.5.1.O.5.4,科目齐全,可+急 +4 l7k6xnh0yc 2026-05-14 8/400 2026-05-17 07:26 by 11n4dfd8yn
[找工作] 售SCI一区T0P文章,我:8.O.5.5.1.O.5.4,科目齐全,可+急 +3 k37jurhrau 2026-05-16 3/150 2026-05-17 01:37 by ue3ir18jc3
[博后之家] 售SCI一区T0P文章,我:8.O.5.5.1.O.5.4,科目齐全,可+急 +4 k37jurhrau 2026-05-16 4/200 2026-05-17 01:35 by ue3ir18jc3
[论文投稿] 售SCI一区T0P文章,我:8.O.5.5.1.O.5.4,科目齐全,可+急 +3 k37jurhrau 2026-05-16 3/150 2026-05-17 01:25 by ue3ir18jc3
[论文投稿] 售SCI一区T0P文章,我:8.O.5.5.1.O.5.4,科目齐全,可+急 +4 ky2p12rrjj 2026-05-15 5/250 2026-05-17 01:10 by ue3ir18jc3
[考研] 售SCI一区T0P文章,我:8.O.5.5.1.O.5.4,科目齐全,可+急 +3 ky2p12rrjj 2026-05-15 4/200 2026-05-17 00:50 by ue3ir18jc3
[论文投稿] 售SCI一区T0P文章,我:8.O.5.5.1.O.5.4,科目齐全,可+急 +5 x0mp7owy2b 2026-05-15 5/250 2026-05-17 00:29 by xiangfeng
[有机交流] 求有机合成大神指点三硫酸乙烯酯(CAS:2793408-99-6)的合成路线 30+3 Leekmid 2026-05-13 10/500 2026-05-16 16:37 by czyzsu
[硕博家园] 申请博士 +3 呃?呃 2026-05-15 3/150 2026-05-16 11:01 by a4742549
[基金申请] 青C资助名额大幅增加! +11 西葫芦炒鸡蛋 2026-05-13 15/750 2026-05-15 14:36 by ambravo
信息提示
请填处理意见