爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
12
返回列表 发新帖
楼主: lgj

[求助] 新手,fortran 行列输出到txt文本出现了问题

[复制链接]

新浪微博达人勋

发表于 2016-10-15 18:33:27 | 显示全部楼层
楼主用的表控格式肯定得不到自己想要的结果
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2016-10-15 22:59:27 | 显示全部楼层
D_Fora 发表于 2016-10-15 18:33
楼主用的表控格式肯定得不到自己想要的结果

用了这个格式控制符   write(100,'(9a14)')((a(i,j)),j=1,9),就能输出了,但是有一点没对齐,一点点小瑕疵
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-10-16 00:17:07 | 显示全部楼层
lgj 发表于 2016-10-15 22:59
用了这个格式控制符   write(100,'(9a14)')((a(i,j)),j=1,9),就能输出了,但是有一点没对齐,一点点小瑕 ...

第一行用字符串读入,再用9A14写出
第二行数据用浮点型读入,再用9F14.4写出
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2016-10-16 19:27:00 | 显示全部楼层
D_Fora 发表于 2016-10-16 00:17
第一行用字符串读入,再用9A14写出
第二行数据用浮点型读入,再用9F14.4写出

好像不行,你可以看我发的图片,我原来第7列是数字,但是我的目的是把第7列转化成文字,所以从第二行开始的第7列就得用字符数组,就不能从第二行开始用实数数组了。感觉非要数字归数字,文字归文字,会不会变得很复杂。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-10-16 22:56:01 | 显示全部楼层
lgj 发表于 2016-10-16 19:27
好像不行,你可以看我发的图片,我原来第7列是数字,但是我的目的是把第7列转化成文字,所以从第二行开始 ...

我觉得哈,你要这样的话,数据还是可以先存到real数组里的,然后第7列判断结束后单独存到字符数组输出,稍微麻烦点,应该还好吧。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2016-10-19 11:24:00 | 显示全部楼层
D_Fora 发表于 2016-10-16 22:56
我觉得哈,你要这样的话,数据还是可以先存到real数组里的,然后第7列判断结束后单独存到字符数组输出, ...

你好,时间隔了久了点,我改了一下
open(100,file='E:\fortran\text2.txt')  【打开文件】
write(100,'(9a14)')a(1,:)             【写第行文字】
write(100,'(6f14.4)')((c(i,j),j=1,6),i=1,73)  【写入1到6列数字】
write(100,'(a14)')(a(i,7),i=2,74)          【写入第7列文字】
write(100,'(2f14.4)')((c(i,j),j=8,9),i=1,73)   【写入8,9列数字】
close(100)     【关闭文件】
end

遇到了两个问题  1。还是不能对齐     2。每次写入新的都会转到文本里的最下面的新一行,不能接到右边(不知道回复里怎么发图。。。)[img]E:\1.PNG[img]E:\2.PNGE:\3.PNG[/img][/img]
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-10-20 18:42:19 | 显示全部楼层
lgj 发表于 2016-10-19 11:24
你好,时间隔了久了点,我改了一下
open(100,file='E:\fortran\text2.txt')  【打开文件】
write(100,' ...

尝试一下按行输出, 第一行write(*,'(9a14)') a(1,:),其他行:
do i = 2,m
write(*,100) c(i,1),c(i,2),c(i,3),c(i,4),c(i,5),c(i,6),a(i,7),c(i,8),c(i,9)
enddo
100 format(6F14.4,A14,2F14.4)
________________________________________________________________
或者试试这个
do i = 2,m
write(*,100) (c(i,j),j=1,6),a(i,7),(c(i,j),j=8,9)
enddo
100 format(6F14.4,A14,2F14.4)
你看下可不可以,如果都没有解决你的问题那我也没更好的办法了,只能寻求大牛指点啦
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2016-10-20 19:34:15 | 显示全部楼层
D_Fora 发表于 2016-10-20 18:42
尝试一下按行输出, 第一行write(*,'(9a14)') a(1,:),其他行:
do i = 2,m
write(*,100) c(i,1),c(i,2) ...

已经可以连续输出了,然后我在格式前 加了空格控制,write(100,'(9X,9a14)') a(1,:),将文字向右移一些,去刻意对齐一下,效果还行了。谢谢!
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-10-20 21:32:51 | 显示全部楼层
lgj 发表于 2016-10-20 19:34
已经可以连续输出了,然后我在格式前 加了空格控制,write(100,'(9X,9a14)') a(1,:),将文字向右移一些, ...

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

本版积分规则

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

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

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