Fortran Coder

查看: 7136|回复: 3
打印 上一主题 下一主题

[输入输出] 默认i/o号以及派生类型非默认i/o定义的问题

[复制链接]

178

帖子

15

主题

0

精华

大宗师

F 币
4973 元
贡献
1152 点
跳转到指定楼层
楼主
发表于 2018-12-29 12:01:18 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
小白再次在此请教各位大佬两个问题:
1.我似乎在哪里听说现在的Fortran有办法可以返回默认的输出输出unit号是哪个,可是在各种教材上又找不到
还请大佬们指教一下
2.是派生类型似乎可以自行定义i/o格式符,并且可以和其他类型在一个语句里混用
但是各个教材里都没有很详细地解释这个东西到底怎么用,
能不能有哪个大佬能指点下,给个能用详细例子介绍这个功能怎么用的就好了
重点主要是不太了解iotype和v_list这两个东西是怎么联合起来使用,使得能像内置数据类型i/o的format控制符那么用
另外,也不理解是不是可以通过这种方式能够改变对type类型的表控(*)输入输出格式方式


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

838

帖子

2

主题

0

精华

大宗师

F 币
3937 元
贡献
2339 点
沙发
发表于 2018-12-29 12:50:49 | 只看该作者
1、
[Fortran] 纯文本查看 复制代码
1program test
2  use iso_fortran_env
3  implicit none
4  print*,input_unit,output_unit !输入输出通道号,ivf输出 5  6
5end

2、《Fortran95/2003程序设计》chapman,第14.8节。

评分

参与人数 1贡献 +5 收起 理由
fcode + 5

查看全部评分

838

帖子

2

主题

0

精华

大宗师

F 币
3937 元
贡献
2339 点
板凳
发表于 2018-12-29 14:21:27 | 只看该作者
iotype 里面保存了自定义格式,f2008标准中建议 v_list 为输出域宽,其实没多大用。
[Fortran] 纯文本查看 复制代码
01module fmt_m
02  implicit none
03  type UDT
04    real x, y
05    integer ind
06  contains
07    procedure::write_UDT
08    generic :: write(formatted) => write_UDT
09  end type
10contains
11  subroutine write_UDT(dtv,unit,iotype,v_list,iostat,iomsg)
12  implicit none
13  class(UDT), intent(in):: dtv
14  integer,intent(in):: unit
15  character(*),intent(in)::iotype
16  integer,intent(in)::v_list(:)
17  integer,intent(out)::iostat
18  character(*),intent(inout)::iomsg
19 
20  select case(iotype(1:2))
21    case('LI') !listdirected
22      write(unit,*) dtv%x, dtv%y, dtv%ind
23    case('DT')
24      write(unit,fmt='('//iotype(3:)//')') dtv%x, dtv%y, dtv%ind
25    case('NA') !namelist
26      !自己写代码
27    end select
28  end subroutine
29end module
30   
31program test
32  use iso_fortran_env
33  use fmt_m
34  implicit none
35  type(UDT)::t=udt(1.2,3.1,3)
36  print*,input_unit,output_unit !屏幕输入输出通道号,ivf为 5  6
37  write(output_unit,'( dt"f4.1,f8.1,i5" )') t
38  write(output_unit,*) t
39  pause
40end program

图片1.png (55.87 KB, 下载次数: 337)

图片1.png

178

帖子

15

主题

0

精华

大宗师

F 币
4973 元
贡献
1152 点
地板
 楼主| 发表于 2018-12-29 15:01:59 | 只看该作者
li913 发表于 2018-12-29 14:21
iotype 里面保存了自定义格式,f2008标准中建议 v_list 为输出域宽,其实没多大用。
[mw_shl_code=fortran, ...

太感谢了,总算有点明白了,非常感谢……
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

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

GMT+8, 2025-5-2 14:27

Powered by Discuz! X3.4

© 2013-2025 Comsenz Inc.

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