如何用fortran语言对文件操作?
我遇到一个优化的问题,原来有数据文件,但要对其中的一个参数优化,如何仅仅修改这个参数,而不影响文件其他部分。例如在下面的例子中,
如何仅仅修改123554这一个数据,而不对文件其他部分造成改变。
谢谢大家看看这个问题,如能提供帮助,更是不胜感激。
123456987644
165343765e41
876553198765
876549123554
987655123386 不如先直接将文件读入内存中(直接利用数组存储),优化完成再输出到文件将原文件覆盖掉就好了! 我自己觉得是从open语句上及write和format语句上入手的,但仍未成功 其实我的文件很大,大约有1m大小的nastran文件,绝对不可能用数组形式处理的。
郁闷中 笨方法: 通过边读取边写入的方法实现文件拷贝,在拷贝过程中把你想要替换的字符句处理一下。 不是很明白楼主的意思
但根据楼主叙述的来理解的话
应该是个很简单的问题啊! 会者不难,难者不会。我自己也找到解决方法。
根据intel fortran的说明,调试成功下面这个小程序。
希望大家继续帮忙将程序通用化。
如果版主认为正确,请给个加分鼓励,毕竟个人认为第一次有希望得分。
character aaa*88,bbb*88,ccc*5
open(3,file='eli705.txt')
open(77,file='temp.txt',status='replace')
do 10 i=1,2104
read(3,457,end=11,err=11)aaa
457 format(a)
write(77,457) trim(aaa)
10continue
11continue
read(3,457,end=11,err=15)aaa
write(bbb,665) 11706
665 format(t57,i5)
ccc=trim(bbb)
aaa=aaa(1:56)//bbb(57:61)//aaa(62:88)
write(77,457) trim(aaa)
do 12 i=1,2104
read(3,457,end=15,err=15)aaa
write(77,457) trim(aaa)
12continue
15continue
end
!!!!下面是部分原始文件
PSOLID17701 2 0 2
SPC1 1 123 17701 THRU 17704
FORCE 1 17715 0 .25 0. 0. -1.
FORCE 1 17716 0 .25 0. 0. -1.
FORCE 1 17717 0 .25 0. 0. -1.
FORCE 1 17718 0 .25 0. 0. -1. !!!文件的2104行
PLOAD41 17701 -125. 17701 17703
$ ^^^^^实现对上面字符更改
$
$+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
$
$ CBUSH1D ELEMENT NO.178
$
$
CBUSH1D 17801 17801 17801 17802
GRID 17801 0 0.0 0.0 0.0
GRID 17802 0 1.0 0.0 0.0
SPC 1 17802 23456 0.0
SPC1 1 12345617801
FORCE11 17802 1.0 17801 17802
$
CBUSH1D 17807 17801 17807 17808
GRID 17807 3 2.0 90.0 45.0 3 123456
GRID 17808 3 3.0 90.0 45.0 3 23456
FORCE 1 17808 3 1.0 1.0 0.0 0.0
PBUSH1D 17801 10. .1 20.
$
enddata
页:
[1]