资源描述:
《统计文件某一行的数据列数(fortran代码)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、统计文件某一行的数据列数(fortran代码)PROGRAMMAINIMPLICITNONEINTEGERm,nmax,cnumCHARACTER*80filenameCHARACTER*1signPRINT*,'文件名:'READ*,filenamePRINT*,'行序号:'READ*,mPRINT*,'行的最大列数:'READ*,nmaxPRINT*,'分隔符:'READ(*,100),sign100FORMAT(A1)CALLCLOUMN(filename,m,nmax,sign,cnum)PRINT*,cnumENDPROGRAM*****************
2、***********************************************************************子程序功能:统计文件中某行的列数,列与列间以分割字符sign区分**作者:快乐的牛和牛**日期:2011年11月5日**参数说明:**filename------------文件名**m-------------------要统计的行序号**nmax----------------第m行中包含分隔符在内的字符个数,估计值,用于保证完整地读取一行**sign----------------分割字符**cnum-------------
3、---返回值,返回列数**注意:未考虑文件无数据、多分隔符、分隔符字串、空行等情况**启示:字符变量可对所有字符不加区分地进行处理,文件的统计操作使用字符串更有效****************************************************************************************SUBROUTINECLOUMN(filename,m,nmax,sign,cnum)IMPLICITNONEINTEGERm,nmax,i,cnumCHARACTER*80filenameCHARACTER*1C0(1:nmax),sig
4、ncnum=1OPEN(101,FILE=filename,ACTION='READ')DOi=1,m-1,1READ(101,*)ENDDOREAD(101,100)C0100FORMAT(A1)PRINT*,C0DOi=1,nmax-1,1IF((C0(i)==sign).AND.(C0(I+1)/=sign))cnum=cnum+1ENDDOCLOSE(101)RETURNENDSUBROUTINE!重复:PROGRAMMAINIMPLICITNONEINTEGERm,nmax,cnumCHARACTER*80filenameCHARACTER*1sig
5、nPRINT*,'文件名:'READ*,filenamePRINT*,'行序号:'READ*,mPRINT*,'行的最大列数:'READ*,nmaxPRINT*,'分隔符:'READ(*,100),sign100FORMAT(A1)CALLCLOUMN(filename,m,nmax,sign,cnum)PRINT*,cnumENDPROGRAM****************************************************************************************子程序功能:统计文件中某行的列数,列与列间以分割字符s
6、ign区分**作者:快乐的牛和牛**日期:2011年11月5日**参数说明:**filename------------文件名**m-------------------要统计的行序号**nmax----------------第m行中包含分隔符在内的字符个数,估计值,用于保证完整地读取一行**sign----------------分割字符**cnum----------------返回值,返回列数**注意:未考虑文件无数据、多分隔符、分隔符字串、空行等情况**启示:字符变量可对所有字符不加区分地进行处理,文件的统计操作使用字符串更有效*****************
7、***********************************************************************SUBROUTINECLOUMN(filename,m,nmax,sign,cnum)IMPLICITNONEINTEGERm,nmax,i,cnumCHARACTER*80filenameCHARACTER*1C0(1:nmax),signcnum=1OPEN(101,FILE=filename,ACTION='READ')DOi=1,m-1,1READ(101,*)ENDDOREAD