fortran读取txt(形式如图),自动获取文件计算行列数,从任意指定行或列读取数据?最好附代码

 我来答
天河流纹石
2013-06-14 · TA获得超过1.3万个赞
知道大有可为答主
回答量:7624
采纳率:76%
帮助的人:4049万
展开全部
我这里有一个自动获取行数和列数的函数,你自己用。

Integer Function GetDataN( cStr )
Character( Len = * ) , Intent( IN ) :: cStr
Integer :: i
Logical :: bIsSeparator , bIsQuote
GetDataN = 0
bIsSeparator = .TRUE.
bIsQuote = .FALSE.
Do i = 1 , Len_Trim( cStr )
Select Case( cStr(i:i) )
Case( '"' , "'" ) !// 如果遇到引号
If ( .Not.bIsQuote ) GetDataN = GetDataN + 1 !//如果不在引号中,则增加一个数据
bIsQuote = .Not.bIsQuote !// 引号结束或开始
bIsSeparator = .FALSE.
Case( " " , "," , char(9) ) !// 如果遇到分隔符
If ( .Not.bIsQuote ) then !// 分隔符如果不在引号中
bIsSeparator = .TRUE.
End If
Case Default
If ( bIsSeparator ) then
GetDataN = GetDataN + 1
End If
bIsSeparator = .FALSE.
End Select
End Do
End Function GetDataN

Integer Function GetFileN( iFileUnit )
Implicit None
Integer , Intent( IN ) :: iFileUnit
Character*(1) :: cDummy
GetFileN = 0
Rewind( iFileUnit )
Do
Read( iFileUnit , * , End = 999 , Err = 999 ) cDummy
GetFileN = GetFileN + 1
End Do
999 Rewind( iFileUnit )
Return
End Function GetFileN

请注意,每一行的列数可能是不同的。你需要自己对文件有一定的了解,是否有必要每一行都判断一下列数??

关于如何从指定行,指定列读取数据。
比如读第 M 行,第 N 列。则:
Do i = 1 , M - 1
Read( 文件通道号 , * )
End Do !// 也就是跳过 M-1,然后
Read( 文件通道号 , * ) 垃圾数组(1:N-1) , 你要的变量
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式