爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 18084|回复: 14

[经验总结] fortran中write和print的异同

[复制链接]

新浪微博达人勋

0
早起挑战累计收入
发表于 2011-12-5 09:05:38 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
最近看到有朋友们在讨论fortran中的write和print命令的异同,于是就去找资料验证了一下,有了下面一下小小的结论,单独发个帖子以便需要查找的人能更好的找到。

相同点:
1、都可以输出内容到屏幕,write(*,*)"字符串" 和print*,"字符串"的效果是一样的
2、都可以使用格式控制符来控制输入和输出,并且都可以直接把控制符写在输出命令的后面
write可以使用格式控制是尽人皆知的了,print使用格式可能还比较少,但也是可以的,关于这一点我做了个小小的验证:
程序如下:
program write_print
print 20,"这是第一个字符串测试"
print '(1x,a)',"这是第二个个字符串测试"
20 format(1x,a)
end
编译后运行如下:
print_format.jpg

因此,print后面的*表示的是默认格式,而不是输出到屏幕。那print命令一定会把数据输出到屏幕吗?查了help之后发现官方的说法是输出到 implicit output device,也就是默认输出设备,我们一般的默认输出设备也就是屏幕了,如果是打印机呢?我没测试过了...

不同点:
write可以指定输出的设备的设备号,而print只能输出到默认设备。要注意的是fortran中默认的输出设备号是unit=6,如果当前没有打开的6号文件,那么如果使用如下语句:
program write_print
write(6,20)"这是一个字符串测试"
20 format(1x,a)
end
将会在屏幕上进行输出,不会提示设备号未找到。但是如果当前已经open了一个文件作为6号输出的话,将会输出到文件而不是屏幕,看来以后open的时候尽量避开6号了...

评分

参与人数 2金钱 +20 贡献 +5 积分流量 +12 体力 +2 收起 理由
godenflame135 + 10 + 2 讲得透彻!
topmad + 10 + 3 + 12 + 2 清风终解吾惑

查看全部评分

密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2011-12-5 09:09:18 | 显示全部楼层
支持一下清风,小技巧大智慧...
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 成长值: 0
发表于 2011-12-5 16:13:30 | 显示全部楼层
看,write(x,y),前一个是表示打开的unit,如果同时打开多个unit的话,在不同的里面输出,比如:
open(1,file="hello.txt")
open(2,file="fine.txt")
write(1,*) "this is file 'hello' "
write(2,*) "this id file 'fine' "
close(1)
close(2)
那么文件hello.txt里面写的是this is file 'hello' ;fine.txt里面写的是this id file 'fine'

注意,close部分是可以缺省的,但是最好写上,因为如果你一下子打开两个unit 1,如下
open(1,file="hello.txt")
write(1,*) "this is file 'hello' "
close(1)

open(1,file="fine.txt")
write(1,*) "this id file 'fine' "
close(1)
此处第一个close(1)不可缺省哦

关于print,我曾经想试试看能不能想write写入到一个open file里面,但是没有成功,当然像清风那个,设置一下输出的格式是ok的

密码修改失败请联系微信:mofangbao

新浪微博达人勋

0
早起挑战累计收入
 楼主| 发表于 2011-12-5 16:35:50 | 显示全部楼层

print当然不能输出到文件...
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 成长值: 0
发表于 2011-12-5 20:56:34 | 显示全部楼层
mofangbao 发表于 2011-12-5 16:35
print当然不能输出到文件...

好吧,没有系统做过研究啦
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2011-12-5 23:49:48 | 显示全部楼层
学习学习!
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2011-12-6 21:28:28 | 显示全部楼层
有书上讲 2、6是默认输出设备,1、5是默认输入设备。。。这个是据版本而定的么???
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2011-12-7 15:53:04 | 显示全部楼层
学习一下啊
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2011-12-7 18:14:20 | 显示全部楼层
楼主的说法好像有点牵强哎
未命名.jpg
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2011-12-7 18:57:36 | 显示全部楼层
ABBY 发表于 2011-12-7 18:14
楼主的说法好像有点牵强哎

哪里牵强了
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

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