cadence 发表于 2008-7-12 00:31:14

如何用fortran语言对文件操作?

我遇到一个优化的问题,原来有数据文件,但要对其中的一个参数优化,
如何仅仅修改这个参数,而不影响文件其他部分。例如在下面的例子中,
如何仅仅修改123554这一个数据,而不对文件其他部分造成改变。
谢谢大家看看这个问题,如能提供帮助,更是不胜感激。

123456987644
165343765e41
876553198765
876549123554
987655123386

freefrompassion 发表于 2008-7-13 01:41:46

不如先直接将文件读入内存中(直接利用数组存储),优化完成再输出到文件将原文件覆盖掉就好了!

cadence 发表于 2008-7-13 05:02:50

我自己觉得是从open语句上及write和format语句上入手的,但仍未成功

cadence 发表于 2008-7-13 22:35:43

其实我的文件很大,大约有1m大小的nastran文件,绝对不可能用数组形式处理的。
郁闷中

topview 发表于 2008-7-23 16:44:34

笨方法: 通过边读取边写入的方法实现文件拷贝,在拷贝过程中把你想要替换的字符句处理一下。

yp51920 发表于 2008-7-25 12:08:48

不是很明白楼主的意思
但根据楼主叙述的来理解的话
应该是个很简单的问题啊!

cadence 发表于 2008-7-30 02:54:16

会者不难,难者不会。我自己也找到解决方法。
根据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]
查看完整版本: 如何用fortran语言对文件操作?