Fortran Coder

标题: 读取规则文件中数据的行数和列数 [打印本页]

作者: 大头鼹鼠    时间: 2017-1-17 14:28
标题: 读取规则文件中数据的行数和列数
[Fortran] 纯文本查看 复制代码
Program main
Integer,parameter :: length=1000
Character(LEN=length) A,B,Filename
Integer(kind=4)::Column, Row, K,L
Column=0;Row=0;K=0;L=1;filename="test.txt"
Open (55,file=Filename)
Read(55,'(A)') A
Do I=1, length
  If(A(I:I)==','.or.A(I:I)==' ') then
    If(I-1>=L)  Column=Column+1
    L=I+1
  End if
End do
CLOSE(55)
Open (55,file=Filename)
Do
  Read(55,*,iostat=k) B
   If( k /= 0 ) Exit
       Row = Row + 1
End Do
Close(55)
Write(*,"(A5,I6,5X,A7,I2)") "Row=",Row,"Column=",Column
End

此代码是网上一些大侠分别写的读取列数和行数的代码,我把他拿过来整理在一起了,此代码的用途可以用于动态数组以及一些数据后处理的需要
文件内容:
we rr 44
55 rr tt
44 66 77

计算结果:


应用案列
通过计算软件获得计算数据,因为有些数据经常是 采用mod(i,a)==0这个方式输出的,在数据的个数统计上有时候会比较麻烦,所以采用这样的数据处理后可以将数据作为图形自动层现出来




















作者: fcode    时间: 2017-1-17 16:52
http://fcode.cn/code_gen-34-1.html
这里有现成的
作者: 大头鼹鼠    时间: 2017-1-18 09:20
fcode 发表于 2017-1-17 16:52
http://fcode.cn/code_gen-34-1.html
这里有现成的

谢谢  看到了
作者: hyy    时间: 2017-3-23 10:05
[Fortran] 纯文本查看 复制代码
DO WHILE(.TRUE.)
READ(55,*,IOSTAT=IOSTAT)
IF(IOSTAT,NE.0) EXIT
   LINES=LINES+1
ENDDO
WRITE(*,*)  LINES

作者: 龙行天下    时间: 2017-3-27 13:33
请教一下,对于行数判断非常容易,而对于列数而言,都存在这么个问题,就是:http://fcode.cn/code_gen-34-1.html,有一个常数,就是512,作为字符串长度,而上面的代码也是有一个1000作为可能最大列数。。
这样写法,都会让代码受到限制,并不通用。
作者: vvt    时间: 2017-3-27 13:38
我觉得一行要是超过1000个字符了,就该考虑用其他数据结构来存储了(比如二进制)
作者: pasuka    时间: 2017-3-27 14:20
龙行天下 发表于 2017-3-27 13:33
请教一下,对于行数判断非常容易,而对于列数而言,都存在这么个问题,就是:http://fcode.cn/code_gen-34- ...

Excel specifications and limits - Excel
https://support.office.com/en-us ... e-8e27-269d656771c3
即使xlsx格式规范,单个worksheet的列数不能超过16384,单列宽带不超过255个字符
从这角度分析,继续强调“本站的代码受到限制”是不是杞人忧天呢?
作者: 大头鼹鼠    时间: 2017-3-27 15:27
龙行天下 发表于 2017-3-27 13:33
请教一下,对于行数判断非常容易,而对于列数而言,都存在这么个问题,就是:http://fcode.cn/code_gen-34- ...

这个代码的意义在于对于一些常用程序的数据处理 如果是大规模数据,还利用这个程序,说明一开始的原始程序就是比较糟糕的




欢迎光临 Fortran Coder (http://bbs.fcode.cn/) Powered by Discuz! X3.2